在约束布局中,如何转换xml属性:
app:layout_constrainedWidth=”true|false”
用代码?
答案 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)