ConstraintLayout и изменение ограничений программно - PullRequest
0 голосов
/ 06 апреля 2019

Я пытаюсь программно изменить ограничения следующим образом:

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.

...