Удаление / редактирование ограничения представления внутри ConstraintLayout программно

У меня есть вид (Linearlayout) внутри ConstraintLayout со следующими атрибутами:

 android:id="@+id/myView"
 app:layout_constraintTop_toBottomOf="@+id/anotherView"
 app:layout_constraintLeft_toLeftOf="parent"
 app:layout_constraintRight_toRightOf="parent"

В некоторых случаях я хочу выровнять myView влево, просто удалив правое ограничение. однако я не могу этого сделать.
Я попытался использовать следующее, просто скопировать и применить параметры ограничения:

 ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams(holder.myView.getLayoutParams());
 holder.myView.setLayoutParams(layoutParams);

но layoutParams всегда получает пустой набор параметров и отправляет представление в верхний левый угол. Возможно, это потому, что я использую это внутри recyclerView?

Как это выглядит внутри recyclerView:

public void onBindViewHolder(final RecyclerView.ViewHolder basicHolder, int position) {
ProfileAdapter.UserInfoViewHolder holder = (ProfileAdapter.UserInfoViewHolder) basicHolder;
ConstraintLayout.LayoutParams layoutParams = new ConstraintLayout.LayoutParams(holder.myView.getLayoutParams(‌​));
holder.myView.setLayoutParams(layoutParams); 
}

2 ответа

Решение

Существует ошибка (будет исправлена ​​в следующем выпуске) при настройке параметров макета так, как вы это делаете. Тем временем вы можете сделать:

ConstraintLayout.LayoutParams layoutParams = (ConstraintLayout.LayoutParams) holder.myView.getLayoutParams();
layoutParams.rightToRight = ConstraintLayout.LayoutParams.UNSET;
holder.myView.setLayoutParams(layoutParams);

То же самое в Котлине:

      val layoutParams = view.layoutParams as ConstraintLayout.LayoutParams
layoutParams.bottomToBottom = ConstraintLayout.LayoutParams.UNSET
Другие вопросы по тегам