1.TabWidget
のandroid:background
属性を定義する必要があります。例えば:
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_above="@android:id/tabs" />
<TabWidget
android:id="@android:id/tabs"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@drawable/tab_backgrnd" />
</RelativeLayout>
drawableはどこtab_backgrnd
にありますか。
2 & 3.まず、Android 自体が行うように、タブのレイアウトを定義します。Android のタブ レイアウトは次のようになります。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="0dip"
android:layout_height="64dip"
android:layout_weight="1"
android:layout_marginLeft="-3dip"
android:layout_marginRight="-3dip"
android:orientation="vertical"
android:background="@drawable/tab_indicator">
<ImageView android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true" />
<TextView android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true"
style="?android:attr/tabWidgetStyle" />
</RelativeLayout>
このレイアウトには、 oneImageView
と oneだけでなく、好きなものを入れることができますTextView
。押された/選択されたときにタブを変更するにStateListDrawable
は、 をルート レイアウトの背景として、およびタブに含まれる他の要素の背景として設定します (上記の例ではImageView
およびTextView
)。
次に、このレイアウトを拡張して、タブ インジケーターとして設定します。
TabHost tabHost = getTabHost();
TabHost.TabSpec tabSpec; // Reusable TabSpec for each tab
Intent intent; // Reusable Intent for each tab
View tabView;
LayoutInflater inflater = getLayoutInflater();
intent = new Intent().setClass(this, YourActivity1.class);
tabView = inflater.inflate(R.layout.tab_layout, tabHost.getTabWidget(), false);
tabSpec = tabHost.newTabSpec(TAG_TAB_1).setIndicator(tabView).setContent(intent);
tabHost.addTab(tabSpec);
// Do the same for the other tabs
...
各タブのアイコンとテキストをプログラムで設定することも (Android がIDandroid:id="@+id/icon"
を利用するようにandroid:id="@+id/title"
)、タブごとに個別のレイアウトを定義することもできます。