TabWidget レイアウトが必要な機能を果たさない状況に遭遇したので、ViewFlipper と RadioGroup を使用して偽装しました。そうすれば、インクルードを使用してタブ (ViewFlipper の各ビュー) のコンテンツを定義できます (Farray の回答のように)。
タブ自体は RadioGroup の RadioButtons でした。コードに OnCheckedChangeListener があり、それに応じて ViewFlipper の表示される子を設定するだけです。XML で RadioButton レイアウトを定義できます (テキストまたは画像などを使用)。
タブが画像を使用する疑似レイアウトを次に示します。
<LinearLayout>
<ViewFlipper android:id="@+id/viewFlipper">
<include android:id="@+id/tab1Content" layout="@layout/tab1Layout" />
<include android:id="@+id/tab2Content" layout="@layout/tab2Layout" />
<include android:id="@+id/tab3Content" layout="@layout/tab3Layout" />
</ViewFlipper>
<LinearLayout>
<RadioGroup android:id="@+id/radgroup1" android:orientation="horizontal">
<RadioButton android:id="@+id/rad1" android:button="@drawable/tab1" />
<RadioButton android:id="@+id/rad2" android:button="@drawable/tab2" />
<RadioButton android:id="@+id/rad3" android:button="@drawable/tab3" />
</RadioGroup>
</LinearLayout>
</LinearLayout>
そして、ここにリスナーがあります:
private OnCheckedChangeListener onRadioButtonCheckedChanged = new OnCheckedChangeListener(){
public void onCheckedChanged(RadioGroup group, int checkedId)
{
switch(checkedId)
{
case(R.id.rad2):
viewFlipper.setDisplayedChild(1);
break;
case(R.id.rad3):
viewFlipper.setDisplayedChild(2);
break;
default:
viewFlipper.setDisplayedChild(0);
break;
}
}
};