val margin = 8
ConstraintSet().apply {
connect(anId, ConstraintSet.START, anotherId, ConstraintSet.START, margin)
}
Run Code Online (Sandbox Code Playgroud)
是margin作为像素还是取决于密度的像素应用?
散布在网络上的各种文章和伪经知识似乎彼此不一致。我正在寻找官方文件或原始证据。
该margin参数应以像素为单位提供。
我最终追踪到ConstraintSet.applyTo(ConstraintLayout)并发ConstraintSet.applyToInternal(ConstraintLayout)现在这里, a 的每个子项ConstraintLayout都有其LayoutParams副本并传递给ConstraintSet.Constraint.applyTo(LayoutParams). 然后将所有参数(不加修改)从 复制ConstraintSet.Constraint到 中LayoutParams,然后将修改后的参数分配LayoutParams回子级。我认为这是提供的保证金参数应该遵循LayoutParams规则的具体证据。
在 ConstraintSet.java 中
Run Code Online (Sandbox Code Playgroud)this.applyToInternal(constraintLayout); constraintLayout.setConstraintSet((ConstraintSet)null); }
applyToInternal(ConstraintLayout)声明时
Run Code Online (Sandbox Code Playgroud)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)声明时
Run Code Online (Sandbox Code Playgroud)//... param.leftMargin = this.leftMargin; param.rightMargin = this.rightMargin; param.topMargin = this.topMargin; param.bottomMargin = this.bottomMargin; //...
| 归档时间: |
|
| 查看次数: |
108 次 |
| 最近记录: |