アプリケーションでの複数のタブ アクティビティが可能です。
例: アプリには、タブ 1 とタブ 2 の 2 つのタブを持つ Launcher TabActivity (HomeTabActivity) が含まれています。
Tab 1 can be a TabActivity with two or more tabs.
Tab 2 can be a TabActivity with two or more tabs.
FirstTab, SecondTab, ThirdTab and FourthTab are simple activities actings as child for child of HomeTabActivity.
xml files containing TabHost as parent element
1. hometab.xml
2. tab1.xml
3. tab2.xml
To differentiate between HomeTabActivity and Its child TabActivities i.e Tab1 and Tab2
I have put TabWidget at top for HomeTabActivity and at bottom for Tab1 and Tab2.
HomeTabActivity (最初のメイン タブ アクティビティ):
public class HomeTabActivity extends TabActivity
{
private TabHost mTabHost = null;
private Intent mIntent = null;
private TabHost.TabSpec mTabSpec = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.hometab);
initializeTabs();
}
private void initializeTabs() {
mTabHost = getTabHost();
mIntent = new Intent().setClass(this, Tab1.class);
mTabSpec = mTabHost
.newTabSpec("Tab1")
.setIndicator("Tab1",
getResources().getDrawable(R.drawable.ic_launcher))
.setContent(mIntent);
mTabHost.addTab(mTabSpec);
mIntent = new Intent().setClass(this, Tab2.class);
mTabSpec = mTabHost
.newTabSpec("Tab2")
.setIndicator("Tab2",
getResources().getDrawable(R.drawable.ic_launcher))
.setContent(mIntent);
mTabHost.addTab(mTabSpec);
mTabHost.setCurrentTab(0);
}
}
Tab1 (HomeTabActivity 内に埋め込まれた TabActivity) :
public class Tab1 extends TabActivity
{
private TabHost mTabHost = null;
private Intent mIntent = null;
private TabHost.TabSpec mTabSpec = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tab1);
initializeTabs();
}
private void initializeTabs() {
mTabHost = getTabHost();
mIntent = new Intent().setClass(this, FirstTab.class);
mTabSpec = mTabHost
.newTabSpec("Tab1 Child 1")
.setIndicator("Tab1 Child 1",
getResources().getDrawable(R.drawable.ic_launcher))
.setContent(mIntent);
mTabHost.addTab(mTabSpec);
mIntent = new Intent().setClass(this, SecondTab.class);
mTabSpec = mTabHost
.newTabSpec("Tab1 Child 2")
.setIndicator("Tab1 Child 2",
getResources().getDrawable(R.drawable.ic_launcher))
.setContent(mIntent);
mTabHost.addTab(mTabSpec);
mTabHost.setCurrentTab(0);
}
}
Tab2 (HomeTabActivity 内に埋め込まれた別の TabActivity) :
public class Tab2 extends TabActivity
{
private TabHost mTabHost = null;
private Intent mIntent = null;
private TabHost.TabSpec mTabSpec = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tab2);
initializeTabs();
}
private void initializeTabs() {
mTabHost = getTabHost();
mIntent = new Intent().setClass(this, ThirdTab.class);
mTabSpec = mTabHost
.newTabSpec("Tab2 Child 1")
.setIndicator("Tab2 Child 1",
getResources().getDrawable(R.drawable.ic_launcher))
.setContent(mIntent);
mTabHost.addTab(mTabSpec);
mIntent = new Intent().setClass(this, FourthTab.class);
mTabSpec = mTabHost
.newTabSpec("Tab2 Child 2")
.setIndicator("Tab2 Child 2",
getResources().getDrawable(R.drawable.ic_launcher))
.setContent(mIntent);
mTabHost.addTab(mTabSpec);
mTabHost.setCurrentTab(1);
}
}
hometab.xml
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
</TabWidget>
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
</LinearLayout>
</TabHost>
tab1.xml および tab2.xml
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/androidblue"
android:layout_weight="1">
</FrameLayout>
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0">
</TabWidget>
</LinearLayout>
</TabHost>