Подтвердить что ты не робот

ViewSwitcher и высота макета в Android

Я добавил ViewSwitcher в LinearLayout, который имеет два вида разной высоты. Однако кажется, что ViewSwitcher занимает пространство самого большого из видов, а не организует сам. Так ли это должно быть?

Что делать в другом случае? Я пытался создать аккордеон, где панель заголовка при щелчке увеличивается размером

4b9b3361

Ответ 1

Поведение ViewSwitcher по умолчанию, унаследованное ViewAnimator, заключается в том, чтобы рассмотреть все дочерние представления в макете, что приведет к тому, что ViewSwitcher займет пространство самого большого ребенка.

Чтобы изменить это, все, что вам нужно сделать, - установить флаг MeasureAllChildren в значение false. Это приведет к тому, что макет будет игнорировать дочерний вид, который в настоящее время скрыт. Установите этот флаг, например. в методе onCreate активности, например:

    ViewSwitcher switcher = (ViewSwitcher)findViewById(R.id.ViewSwitcher);
    switcher.setMeasureAllChildren(false);

Пример XML:

<ViewSwitcher xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@+id/viewSwitcher"
        android:measureAllChildren="false">
</ViewSwitcher>