使用应用程序的多个选项卡活动是可能的。
例如: 应用中包含一个启动器TabActivity(HomeTabActivity)具有两个选项卡:标签1和标签2
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(另一个TabActivity的HomeTabActivity内部嵌入式):
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>