Два представления в горизонтальной цепочке, когда одно View.GONE, другое должно быть сосредоточено в родительском

#android #android-constraintlayout

#Android #android-constraintlayout

Вопрос:

У меня есть два представления рядом друг с другом в горизонтальной цепочке ConstraintLayout.

Однако, когда одно из представлений является View.GONE (программно установлено), я хочу, чтобы другое представление было центрировано внутри его родительского. Я пробовал горизонтальную цепочку, но, похоже, это не работает.

т. е. я хочу перейти от этого: введите описание изображения здесь

к этому: введите описание изображения здесь

Однако, когда я устанавливаю кнопку 2 в View.GONE, кнопка 1 остается в том же положении, слегка смещенная влево, как если бы кнопка 2 была View.НЕВИДИМЫЙ, а не View.GONE.

     <Button
        android:id="@ id/btn_1"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:gravity="center"
app:layout_constraintHorizontal_chainStyle="spread_inside"
        app:layout_constraintHorizontal_weight="1"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toLeftOf="@id/btn_2"
        app:layout_constraintTop_toBottomOf="parent" />

    <Button
        android:id="@ id/btn_2"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:gravity="center"
        app:layout_constraintHorizontal_weight="1"
        app:layout_constraintLeft_toRightOf="@id/btn_1"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toBottomOf="parent" />
  

Ответ №1:

Попробуйте это:

 <Button
    android:id="@ id/btn_1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    app:layout_constraintHorizontal_weight="1"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toLeftOf="@id/btn_2"
    app:layout_constraintTop_toTopOf="parent" />

<Button
    android:id="@ id/btn_2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    app:layout_constraintHorizontal_weight="1"
    app:layout_constraintLeft_toRightOf="@id/btn_4"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />
  

Ответ №2:

Оказывается, у меня была группа ConstraintLayout, которая ссылалась на две кнопки, которые мешали цепочке. Как только я удалил группу, все заработало, как ожидалось.