以编程方式设置百分比宽度约束布局 Android

2022-09-03 03:42:46

对于Android中的约束布局v1.1.x,我们可以将高度和宽度设置为百分比。类似地,需要在 Android 中以编程方式将视图宽度和高度设置为百分比:例如,对于某些约束布局,此代码是用 xml 编写的:

<!-- the widget will take 40% of the available space -->
    app:layout_constraintWidth_default="percent"
    app:layout_constraintWidth_percent="0.4"

它的java代码将在运行时进行?


答案 1

您需要使用约束集 - 参考

此类允许您以编程方式定义一组要与 ConstraintLayout 一起使用的约束。它允许您创建和保存约束,并将其应用于现有约束布局。可以通过多种方式创建约束集:

mConstraintLayout = (ConstraintLayout) findViewById(R.id.myconstraint_layout)

ConstraintSet set = new ConstraintSet();

// Add constrains - Here R.id.myconstraint_layout is the Id of your constraint layout
set.constrainPercentHeight(R.id.myconstraint_layout, 0.4);
set.constrainPercentWidth(R.id.myconstraint_layout, 0.4);

// Apply the changes - mConstraintLayout is reference to the desired view
set.applyTo(mConstraintLayout); 

您可以在此集合上调用这些高度宽度百分比方法

并像这样将这些约束应用于约束布局

set.applyTo(mConstraintLayout); 

答案 2

不确定这是更好还是更糟,但是除了建议的答案之外,还有另一种方法可以做到这一点:

Kotlin:

(myView.layoutParams as ConstraintLayout.LayoutParams)
    .matchConstraintPercentWidth = value
myView.requestLayout()

爪哇岛:

(myView.layoutParams (ConstraintLayout.LayoutParams))
    .matchConstraintPercentWidth = value
myView.requestLayout()

推荐