View.GONE не работает с определенными детьми "Constraint.Group"

Я экспериментирую с "Constraint.Group" и у меня есть представления детей: A, B, C.

В коде "Constraint.Group".visibility = View.Gone работает, но если я выберу A.visibility = View.Gone это не повлияет на просмотр детей. Это нормальное поведение?

Ответ 1

Похоже, видимость группы превосходит видимость отдельных видов группы. Это имеет смысл, поскольку для каждого представления определена некоторая видимость (GONE, VISIBLE, INVISIBLE), поэтому, если соблюдена настройка видимости отдельного вида, целостность группы будет нарушена. Другими словами, индивидуальный взгляд, который мы изменили, не стал бы частью группы.

Ответ 2

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

<ImageView
    android:id="@+id/view1"
    android:layout_width="0dp"
    android:layout_height="0dp"
    />

<ImageView
    android:id="@+id/view2"
    android:layout_width="0dp"
    android:layout_height="0dp"
    />

<android.support.constraint.Group
        android:id="@+id/group1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:visibility="visible"
        app:constraint_referenced_ids="view1,view2" />

<android.support.constraint.Group
        android:id="@+id/group2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:constraint_referenced_ids="view1" />

Невозможно изменить видимость одного представления внутри группы, но таким образом можно изменить видимость group1 или group2.