在ConstraintLayout中以编程方式添加视图

8

我试图在 ConstraintLayout 中的同一位置添加一个 View 至另一个 View,但是新添加的 View 没有得到原先 View 的 LayoutParams。

新添加的 View 位于容器的顶部或左侧。

以下是我的代码:

TextView cloneView = new TextView(getContext());
cloneView.setLayoutParams(otherView.getLayoutParams());
mainContainer.addView(cloneView);
1个回答

11
要向ConstraintLayout添加视图,您必须使用ConstraintSet添加约束。
View v = findViewById(...);
ConstraintLayout cl = (ConstraintLayout) findViewById(...);


ConstraintSet c = new ConstraintSet();
cl.addView(v);
int id = v.getId();

c.clone(cl);
c.connect(id, ConstraintSet.Top, otherViewIdAboveV, ConstraintSet.BOTTOM, 0);
...
other constraints
...
c.applyTo(cl);

clone() - 从一个布局中复制约束条件,如果该布局是父布局且没有任何约束条件呢? - Pavel Poley
@PavelPoley 我不确定我理解这个评论。情况是父级是一个ConstraintLayout,通过这样做,您可以添加具有相应约束的视图。如果在添加新视图时它没有约束,仍然必须为其添加新约束。 - Juan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接