我在LinearLayout中添加了一个ViewSwitcher,它具有两个高度不同的 View ,但是,似乎ViewSwitcher占据了最大 View 的空间,而不是在安排自身。这是应该的吗?

在其他情况下该怎么办?我试图创建一个 Accordion ,单击时标题面板的大小会增加

最佳答案

ViewAnimator继承的ViewSwitcher的默认行为是考虑布局上的所有 subview ,这将导致ViewSwitcher占据最大 subview 的空间。

要更改此设置,您需要做的就是将MeasureAllChildren标志设置为false。这将使布局传递忽略当前隐藏的 subview 。设置此标志,例如在 Activity 的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>

10-04 12:01