android - ConstraintSet.connect() 边距参数是 px 还是 dp?

标签 android margin pixel density-independent-pixel constraintset

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/

相关文章:

java - Android中如何从Firebase实时数据库中获取最后的数据

android - 意外的顶级异常( react native )

css - 在窗口调整大小时保持绝对定位和居中的 div 的边距

css - Flying Saucer xhtml to pdf header margins on every page

Python - 使用 ctypes 将 imgdata 指针传递给 C 中的函数

android - 如何在achartengine android中的饼图右侧显示图例

android - 从 SpannableStringBuilder 获取 SpannableString 的最佳方法

css - 如何使具有相对宽度的div居中?

exception - 捕获 "Pixel outside the boundaries"异常?

c# - 将图像中的每个像素设置为颜色列表中最接近的匹配项