res/drawable/tabselector.xml
<selector
android:id="@+id/myselector"
xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Non focused states -->
<item
android:state_focused="false"
android:state_selected="false"
android:state_pressed="false"
android:drawable="@drawable/darklogo" />
<item
android:state_focused="false"
android:state_selected="true"
android:state_pressed="false"
android:drawable="@drawable/lightlogo" />
<!-- Focused states -->
<item
android:state_focused="true"
android:state_selected="false"
android:state_pressed="false"
android:drawable="@drawable/lightlogo" />
<item
android:state_focused="true"
android:state_selected="true"
android:state_pressed="false"
android:drawable="@drawable/lightlogo" />
<!-- Pressed -->
<item
android:state_pressed="true"
android:drawable="@drawable/lightlogo" />
</selector>
ここに含めた XML は、case ステートメントを埋め込むことができるドローアブルを定義する方法です。割り当てられているビューの状態に応じて、異なるドローアブルを提示します。res/drawable
ドローアブルとして、プロジェクトのフォルダー内に xml ファイルとして保存する必要があります (例: tabselector.xml
)。
Tabhost に使用するには、通常どおりに TabActivity を作成する必要があります (このチュートリアルの例に示すように)。
次に、各タブをホストに追加するときに、tabselector
以下の「TAB 1」に示すように、ドローアブルをインジケーターとして指定します。
Drawable mySelector = getResources().getDrawable(R.drawable.tabselector);
mTabHost.addTab(mTabHost.newTabSpec("tab_test1").setIndicator("TAB 1", mySelector).setContent(R.id.textview1));
mTabHost.addTab(mTabHost.newTabSpec("tab_test2").setIndicator("TAB 2").setContent(R.id.textview2));