Я пытаюсь программно изменить ограничения следующим образом:
final ConstraintSet set = new ConstraintSet();
set.clone(this);
if(text == null) {
view.setVisibility(GONE);
set.clear(div.getId(), ConstraintSet.TOP);
set.connect(div.getId(), ConstraintSet.TOP, otherView.getId(), ConstraintSet.BOTTOM);
}
set.applyTo(this);
Но правило не применяется. div
переходит в начало макета, как будто нет ограничения сверху.
Что я делаю неправильно?
Обновление
Если я изменю следующее:
set.clone(this);
...
set.apply(this);
до:
View root = LayoutInflater.from(getContext()).inflate(R.layout.my_layout, this);
ConstraintLayout layout = root.findViewById(R.id.constraint_layout);
....
set.clone(layout);
....
set.apply(layout);
Макет правильный! Но я не понимаю, почему.
this
- это ConstraintLayout
, так как я расширяю ConstraintLayout
.