val margin = 8
ConstraintSet().apply {
connect(anId, ConstraintSet.START, anotherId, ConstraintSet.START, margin)
}
边距
是作为像素还是密度相关像素应用的?
网络上散布的各种文章和杜撰的知识似乎在其中一个方面并不一致。我正在寻找官方文档或来源证据。
最佳答案
margin
参数应以像素为单位提供。
我最终跟踪了 ConstraintSet.applyTo(ConstraintLayout)
到 ConstraintSet.applyToInternal(ConstraintLayout)
并发现这里,ConstraintLayout< 的每个子级
将其 LayoutParams
复制并传递给 ConstraintSet.Constraint.applyTo(LayoutParams)
。然后将所有参数(不加修改)从 ConstraintSet.Constraint
复制到 LayoutParams
中,然后将修改后的 LayoutParams
分配回子级。我认为这是具体的证据,表明提供的边距参数应遵循 LayoutParams
规则。
在 ConstraintSet.java
this.applyToInternal(constraintLayout); constraintLayout.setConstraintSet((ConstraintSet)null); }
位于 applyToInternal(ConstraintLayout)
声明
int count = constraintLayout.getChildCount(); //... LayoutParams param; for(int i = 0; i < count; ++i) { View view = constraintLayout.getChildAt(i); //... param = (LayoutParams)view.getLayoutParams(); constraint.applyTo(param); view.setLayoutParams(param); //... } //...
位于 applyTo(LayoutParams)
声明
//... param.leftMargin = this.leftMargin; param.rightMargin = this.rightMargin; param.topMargin = this.topMargin; param.bottomMargin = this.bottomMargin; //...
关于android - ConstraintSet.connect() 边距参数是 px 还是 dp?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56265130/