代码之家  ›  专栏  ›  技术社区  ›  Archie G. Quiñones

如何以编程方式设置constraintlayout的xml属性“layout_constrainedWidth”?

  •  0
  • Archie G. Quiñones  · 技术社区  · 6 年前

    在约束布局中,如何转换XML属性:

    app:layout_constrainedWidth=”true|false”

    在代码中?

    2 回复  |  直到 6 年前
        1
  •  1
  •   Jeel Vankhede    6 年前

    如果你想设定 constrainedWidth/Height 从程序上来说,你必须 ConstraintLayout.LayoutParams 并设置名为 约束宽度 限制高度 按照你的意愿。

    即。

    ConstraintLayout.LayoutParams lp = (ConstraintLayout.LayoutParams) myView.getLayoutParams(); // View for which we need to set constrainedWidth.
    lp.constrainedWidth = true/false;
    myView.setLayoutParams(lp);
    

    约束宽度

    指定水平尺寸是否在左侧和左侧都受约束 设置了正确的约束,小部件维度不是固定的 尺寸。

    默认情况下,如果小部件设置为 WRAP_CONTENT 我们将 将该维度视为 固定维数 ,表示维度将 不受约束而改变。

    将此属性设置为 允许更改维度以尊重约束。

    退房 here .

        2
  •  0
  •   Archie G. Quiñones    6 年前

    我刚想出来。

    所以根据上面的答案,

    constrainedWidth 可以通过访问 ConstraintLayout.LayoutParams 因此可以通过以下代码进行更改:(谢谢@jeelvankhee)

    ConstraintLayout.LayoutParams lp = (ConstraintLayout.LayoutParams) 
    myView.getLayoutParams(); // View for which we need to set constrainedWidth.
    lp.constrainedWidth = true/false;
    myView.setLayoutParams(lp);
    

    但是在使用时 ConstraintsSet 需要以下代码:

    val constraintLayout = // your constraint layout
    val constraintSet = ConstraintSet()
    constraintSet.clone(constraintLayout)
    
    // This is the imporatant part
    constraint.constrainDefaultWidth(R.id.yourViewId, ConstraintSet.MATCH_CONSTRAINT_WRAP)
    
    constraintSet.applyTo(constraintLayout)