我正在使用ViewSwitcher,它使我可以轻松地在内置了动画的两个不同的列表标题之间来回切换。

但是,问题在于两个 View 的高度变化很大,并且带有layout_height="wrap_content"的ViewSwitcher似乎可以同时测量两个子级,并将两个高度中的较大者作为自己的高度。当显示较小的 View 时,这会导致大量不必要的空白空间。

我了解为什么这是所需的ViewSwitcher行为,但不是所需的“我的应用”行为。

例子:
假设 View A的高度为50dp, View B的高度为100dp,并且两者都作为子代添加到ViewSwitcher中。即使显示View A,ViewSwitcher总是始终高100dp。

我想要的是能够在A和B之间切换,并使ViewSwitcher缩小或增大以适合当前显示的 View 。我怎样才能做到这一点?

最佳答案

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">

有关更多信息,请参见documentation

10-07 12:30