Open1
Android
ConstraintLayoutを動的に変更する
- 動的にレイアウトを動かしたいときがある。そんな時に
ConstraintSet
を使用する。 - ガイドラインを動的に割合を変更し、ガイドラインを参照している
View
の大きさを取得する例。 -
ConstraintSet
を適用しすぐに幅を取得しても以前のものが返ってくるのでViewTreeObserver.OnPreDrawListener
を使って変更後のタイミングで取得する。 -
ViewTreeObserver.OnPreDrawListener
使用時にはremoveOnPreDrawListener
も忘れずに
final ConstraintLayout constraintLayout = findViewById(R.id.constraint);
final ConstraintSet set = new ConstraintSet();
set.clone(constraintLayout);
set.setGuidelinePercent(R.id.guideline, 50);
set.applyTo(constraintLayout);
constraintLayout.getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
@Override
public boolean onPreDraw() {
constraintLayout.getViewTreeObserver().removeOnPreDrawListener(this);
final int width = childView.getWidth();
return false;
}
});