有两种方式可以实现 TabHost 。一种是直接使用 TabActivity ,一种是不使用 TabActivity 。
使用TabActivity实现TabHost
1.strings.xml
<resources>
<string name="app_name">TestActivity</string>
<string name="menu_settings">Settings</string>
<string name="title_activity_main">MainActivity</string>
<string name="tab1">选项卡1</string>
<string name="tab2">选项卡2</string>
<string name="tab3">选项卡3</string>
</resources>
2.main.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@color/black"
>
<LinearLayout
android:id="@+id/tab1"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal">
<TextView
android:id="@+id/TextView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24dip"
android:text="@string/tab1"/>
</LinearLayout>
<LinearLayout
android:id="@+id/tab2"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal">
<TextView
android:id="@+id/TextView02"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24dip"
android:text="@string/tab2"/>
</LinearLayout>
<LinearLayout
android:id="@+id/tab3"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal">
<TextView
android:id="@+id/TextView03"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24dip"
android:text="@string/tab3"/>
</LinearLayout>
</FrameLayout>
3.Activity
package com.example.testactivity;
import android.app.TabActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.widget.TabHost;
public class MainActivity extends TabActivity {
private TabHost myTabHost;
protected void onCreate(Bundle icicle) {
super.onCreate(icicle);
// setContentView(R.layout.main);
//1.获取该 Activity 用于容纳 tab 的 TabHost 对象
myTabHost=this.getTabHost();
//2.获取 LayoutInftelar 对象
LayoutInflater inflater=LayoutInflater.from(this);
//3。将 main.xml 的内容,嵌入到 myTabhost.getTabContentView() 所返回的 FrameLayout 中
inflater.inflate(R.layout.main, myTabHost.getTabContentView(), true);
/** 给 tabhost 增加 tab
newTabSpec(String tag) 返回一个 TabHost.TabSpec 对象,其参数用于标识一个 tab 的 tag ,为 String 类型
setIndicator(" "): 显示 tab 上的文字
setContent(int ) :指定 tab 的内容,必须为 id ,比如空间的 id 或者 layout 的 id*/
myTabHost.addTab(
myTabHost.newTabSpec("通话记录")
.setIndicator("通话记录",getResources().getDrawable(android.R.drawable.ic_dialog_alert))
.setContent(R.id.tab1));
myTabHost.addTab(
myTabHost.newTabSpec("收藏")
.setIndicator("收藏",getResources().getDrawable(android.R.drawable.ic_dialog_info))
.setContent(R.id.tab2));
myTabHost.addTab(
myTabHost.newTabSpec("拨号")
.setIndicator("拨号",getResources().getDrawable(android.R.drawable.ic_dialog_dialer))
.setContent(R.id.tab3));
setContentView(myTabHost);
}
}
程序运行截图
![](https://img-my.csdn.net/uploads/201209/15/1347698528_1983.jpg)