Tabコントロールを使う場合、決まりごとがあります。
レイアウトのxmlの内容は以下のような構成になります。
#codeprettify{{
?xml version="1.0" encoding="utf-8"?>
TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@android:id/tabhost" > <!-- Tab --> <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent" android:layout_height="wrap_content"></TabWidget>
<!-- Tabの内容 --> <FrameLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:id="@android:id/tabcontent"> </FrameLayout>
/TabHost> }}
タグ | 説明 |
TabHost | android:idは必ず@android:id/tabhostにしなければならない。 |
TabWidget | android:idは必ず@android:id/tabsにしなければならない。 |
FrameLayout | android:idは必ず@android:id/tabcontentにしなければならない。 |
決まり事といっても、上記の表の物だけです。
TabWidgetのid | android:id="@android:id/tabs" |
FrameLayoutのid | android:id="@android:id/tabcontent" |
Tabコントロールを使う場合は、TabActivityを使います。
TabActivityには、Tabコントロールを使うためのメソッドが用意されているためです。
#codeprettify{{ public class TabSampleActivity extends TabActivity{
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main);
TabHost host = getTabHost(); TabSpec spec = null; spec = host.newTabSpec("Tab1"); spec.setIndicator("Tab1", getResources().getDrawableandroid.R.drawable.ic_menu_view)); spec.setContent(new Intent(this, SampleTabView.class)); host.addTab(spec); }
}
}}
まず、getTabHost()でタブを管理するTabHostクラスのインスタンスを取得します。
その後、TabHostインスタンスを使って、TabSpecインスタンスを生成します。
TabSpecは1つのタブの内容を管理するクラスです。
このクラスに、いろいろな設定を行い、TabHost#addTab()メソッドで、TabSpecインスタンスをTabHostに追加します。
XMLでViewを指定する場合、includeタグで指定することも可能です。 (まぁ、結果的にViewを指定することになるんだけど)