Как заставить ViewSwitcher обернуть только отображаемую в данный момент высоту просмотра? - PullRequest
14 голосов
/ 29 марта 2011

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

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

Я понимаю, почему это желаемое поведение ViewSwitcher, но это НЕ желаемое поведение моего приложения.

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

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

1 Ответ

41 голосов
/ 08 апреля 2011

Установите атрибут 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">

Для получения дополнительной информации см. документация .

...