2017-03-16 96 views
0

我嘗試在ConstraintLayout中的其他View的相同位置添加View,但添加的View沒有獲得其他View的LayoutParams。在ConstraintLayout中以編程方式添加視圖

添加的視圖發生在容器的頂部。

這是我的代碼:

TextView cloneView = new TextView(getContext()); 
cloneView.setLayoutParams(otherView.getLayoutParams()); 
mainContainer.addView(cloneView); 

回答

1

添加視圖一個ConstraintLayout你必須添加使用約束集的約束。

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); 
+0

clone() - 從佈局中複製約束條件,如果佈局是父對象且沒有約束條件,該怎麼辦? –

+0

@PavelPoley我不知道我是否理解評論。這種情況是,父母是一個ConstraintLayout,通過這樣做,你可以通過相應的約束將Views添加到它。如果在添加新視圖時沒有約束條件,仍然需要爲其添加新的約束條件。 – Juan

相關問題