1. ホーム
  2. java

[解決済み] ConstraintLayoutにビューと制約をプログラムで追加するには?

2023-05-26 06:53:32

質問

私は、プログラムによってビューを ConstraintLayout にビューを追加し、レイアウトが機能するために必要なすべての制約をセットアップすることに問題があります。

今あるものはうまくいきません。

ConstraintLayout layout = (ConstraintLayout) findViewById(R.id.mainConstraint);
ConstraintSet set = new ConstraintSet();
set.clone(layout);

ImageView view = new ImageView(this);
layout.addView(view,0);
set.connect(view.getId(), ConstraintSet.TOP, layout.getId(), ConstraintSet.TOP, 60);
set.applyTo(layout);

ImageView はレイアウト上にも表示されません。に追加すると RelativeLayout に追加する場合、それは魅力的に動作します。

私のレイアウトが再び動作するように、必要な制約を作成するにはどうしたらよいでしょうか。

どのように解決するのですか?

ImageViewを追加した後、レイアウトをクローンする必要があると思います。

ConstraintLayout layout = (ConstraintLayout)findViewById(R.id.mainConstraint);
ConstraintSet set = new ConstraintSet();

ImageView view = new ImageView(this);
view.setId(View.generateViewId());  // cannot set id after add
layout.addView(view,0);
set.clone(layout);
set.connect(view.getId(), ConstraintSet.TOP, layout.getId(), ConstraintSet.TOP, 60);
set.applyTo(layout);```