您要使用的是FrameLayout。这将使您拥有一堆视图。它的部分文档内容如下:
子视图绘制在堆栈中,最近添加的子视图在顶部。
这在 Android 框架中经常用于执行诸如显示空视图或列表视图之类的任务,如下面的代码片段所示。此代码段可以显示 ListView 或 TextView。
<FrameLayout
android:layout_width="match_parent"
android:layout_height="0dip"
android:layout_weight="1" >
<!-- Here is the list. Since we are using a ListActivity, we
have to call it "@android:id/list" so ListActivity will
find it -->
<ListView android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:drawSelectorOnTop="false"/>
<!-- Here is the view to show if the list is emtpy -->
<TextView android:id="@android:id/empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="No items."/>
</FrameLayout>
请注意,第一个元素在底部,最后一个元素在底部,在膨胀布局之后。在这个特定的示例中,这意味着 TextView 将是唯一可见的,因为它匹配父项(即填充父项。)
如果要使另一个视图可见,则可以使另一个视图不可见:
findViewById(android.R.id.empty).setVisible(View.INVISIBLE);
如果您有多个视图(称为屏幕),只需遍历它们并将您不想显示的视图设置为不可见,以便显示您想要显示的视图。
请注意,如果您想变得更漂亮,您可以对片段执行相同的技术。有一篇很好的关于这方面的 Android 培训文章,名为Building a Flexible UI。它仍然使用 FrameLayout,但它使用 Fragment 事务。但它可能不适用于您的特定情况,因为片段不能包含其他片段并且您已经依赖 TabHost 中的多个片段,所以从上面更简单的 FrameLayout 方法开始。