如何以编程方式设置ConstraintLayout的XML属性'layout_constrainedWidth'?

时间:2019-01-17 06:49:43

标签: android android-constraintlayout

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

app:layout_constrainedWidth=”true|false”

用代码?

2 个答案:

答案 0 :(得分:1)

如果要以编程方式设置constrainedWidth/Height,则必须以ConstraintLayout.LayoutParams为视图,并设置名为 constrainedWidth constrainedHeight 的标志>根据您的意愿。

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

constrainedWidth

  

指定是否同时限制水平尺寸和左侧尺寸   设置了正确的约束,并且小部件尺寸不是固定的   尺寸。

     

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

     

将此属性设置为 true   允许更改尺寸以遵守约束条件。

签出here

答案 1 :(得分:0)

我只是想通了。

因此,根据以上答案,

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

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)