2017-03-16 20 views
0

ConstraintLayoutの他のビューと同じ場所にビューを追加しようとしましたが、追加されたビューは他のビューのLayoutParamsを取得しません。ConstraintLayoutでプログラムでビューを追加する

追加されたビューは、コンテナの左上に表示されます。

これは私のコードです:

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

答えて

1

あなたがConstraintSetを使用して制約を追加する必要が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であり、これを行うことによって、ビューに対応する制約を追加します。新しいビューを追加するときに制約がない場合でも、新しい制約を追加する必要があります。 – Juan

関連する問題