レイアウトでタブを作成しようとしています。私は、TabWidget
TabHost
を用いた例とチュートリアルをたくさん見つけましたが、それらはすべて、次のいずれかを伴う:タブを含むレイアウトをXMLで完全に作成するにはどうすればよいですか?
-
活動における
- Javaコードの各タブの
- 別々の活動は、それぞれの
- 別々の断片タブ
タブ内のコンテンツは静的なので、レイアウト内のすべてを純粋なXMLに含めることができます。
とにかくそれをするには?
レイアウトでタブを作成しようとしています。私は、TabWidget
TabHost
を用いた例とチュートリアルをたくさん見つけましたが、それらはすべて、次のいずれかを伴う:タブを含むレイアウトをXMLで完全に作成するにはどうすればよいですか?
タブ内のコンテンツは静的なので、レイアウト内のすべてを純粋なXMLに含めることができます。
とにかくそれをするには?
簡単な答え、いいえ。 TabHost
をJavaコードでセットアップしてタブを作成する必要があります。フラグメントを使用せずにタブの静的レイアウトを作成できますが、それでもJavaでは設定が必要です。
この設定をコードで実行しないと、TabWidget
はどのレイアウトがどのタブに対応しており、機能しないのかわからなくなります。あなたは少しのコードを書く必要があります。
これを行うためのコードは本当に簡単です。
(あなたがそれをしたいあなたのレイアウトの内側に配置)XML:
<TabHost android:id="@+id/tab_host"
android:layout_width="fill_parent"
android:layout_height="wrap_content" >
<LinearLayout android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<TabWidget android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<FrameLayout android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<LinearLayout
android:id="@+id/tab_one_container"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
<LinearLayout
android:id="@+id/tab_two_container"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</FrameLayout>
</LinearLayout>
</TabHost>
Javaコード(どこでもセットアップレイアウトを配置):私が見つけた最高です
TabHost host = (TabHost)findViewById(R.id.tab_host);
host.setup();
TabSpec spec = host.newTabSpec("Tab One");
spec.setContent(R.id.tab_one_container);
spec.setIndicator("Tab One");
host.addTab(spec);
spec = host.newTabSpec("Tab Two");
spec.setContent(R.id.tab_two_container);
spec.setIndicator("Tab Two");
host.addTab(spec);
いくつかのコードが必要です.xmlは、タブがクリックされたときにどのように切り替えるか、それがどうなるかを知ることはありません。あなたは、活動/断片と同じくらい重いものを避けることができますが、コードレスではないでしょう。 –