Как заставить ViewSwitcher обернуть только текущую отображаемую высоту?

Я использую ViewSwitcher, который позволяет легко переключаться между двумя разными заголовками заголовков с встроенными анимациями.

Однако проблема состоит в том, что два вида имеют очень различную высоту, и кажется, что ViewSwitcher с layout_height="wrap_content", измеряет обоих детей и берет большую из двух высот как свои собственные. Это приводит к большому количеству нежелательного пробела, расположенного ниже меньшего вида, когда он показывает.

Я понимаю, почему это желательно поведение ViewSwitcher, но НЕ НЕОБХОДИМО. Мое поведение в приложении.

Пример:
Say View A - 50dp tall, а View B - 100dp, и оба они добавляются как дети в ViewSwitcher. ViewSwitcher всегда имеет высоту 100dp даже при просмотре View A.

Я хочу, чтобы я мог переключаться между A и B и уменьшать или увеличивать размер ViewSwitcher, независимо от того, какой вид отображается в данный момент. Как я могу это сделать?

Ответ 1

Установите атрибут measureAllChildren на ViewSwitcher на false.

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

Подробнее см. документация.