2013-03-14 27 views
9

レイアウトでタブを作成しようとしています。私は、TabWidgetTabHostを用いた例とチュートリアルをたくさん見つけましたが、それらはすべて、次のいずれかを伴う:タブを含むレイアウトをXMLで完全に作成するにはどうすればよいですか?

    活動における
  • Javaコードの各タブの
  • 別々の活動は、それぞれの
  • 別々の断片タブ

タブ内のコンテンツは静的なので、レイアウト内のすべてを純粋なXMLに含めることができます。

とにかくそれをするには?

+3

いくつかのコードが必要です.xmlは、タブがクリックされたときにどのように切り替えるか、それがどうなるかを知ることはありません。あなたは、活動/断片と同じくらい重いものを避けることができますが、コードレスではないでしょう。 –

答えて

12

簡単な答え、いいえ。 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); 
+0

そのようなものは吸う。なぜ私はそれらを接続するためにタブのレイアウトのIDを参照できませんか? 私はコードを書いても構いませんが、コード内のリンクを適切に配置しなくてもいいと感じています。 – erwan

+1

GoogleはSDKにSDKを書き込んでいないため、実行できません。私はあなたにとってより良い答えが得られたことを願っていますが、あなたが他の誰かの枠組みを使って作業するときに、彼らはそれらが定める制限を受けます。これはちょうどそれらの限界の1つであることが起こります。 – MCeley

関連する問題