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

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

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

22
задан Azlam 24 August 2010 в 15:49
поделиться

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>
52
ответ дан 29 November 2019 в 04:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: