使用したいのは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が親と一致する(つまり、親を埋める)ため、表示されるのはTextViewだけであることを意味します。
他のビューを表示したい場合は、他のビューを非表示にすることができます。
findViewById(android.R.id.empty).setVisible(View.INVISIBLE);
複数のビュー(画面と呼びます)がある場合は、それらをループして、表示したくないビューを非表示に設定して、表示したいビューを表示します。
より洗練されたものにしたい場合は、フラグメントを使用して同じ手法を実行できることに注意してください。これについては、柔軟なUIの構築と呼ばれる優れたAndroidトレーニング記事があります。引き続きFrameLayoutを使用しますが、Fragmentトランザクションを利用します。ただし、フラグメントに他のフラグメントを含めることはできず、TabHost内の複数のフラグメントにすでに依存しているため、特定のケースでは機能しない可能性があります。したがって、上記のより単純なFrameLayoutメソッドから始めてください。