TabHost的实现有两种方式,第一种继承TabActivity,从TabActivity中用getTabHost()方法获取TabHost。各个Tab中的内容在布局文件中定义就行了。
mainActivity.xml
private TabHost myTabHost;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);//setContentView(R.layout.main);myTabHost = this.getTabHost();LayoutInflater.from(this).inflate(R.layout.main,myTabHost.getTabContentView(), true);myTabHost.addTab(myTabHost.newTabSpec("选项卡1").setIndicator("选项卡1",getResources().getDrawable(R.drawable.img01)).setContent(R.id.ll01));myTabHost.addTab(myTabHost.newTabSpec("选项卡2").setIndicator("选项卡2",getResources().getDrawable(R.drawable.img02)).setContent(R.id.ll01));myTabHost.addTab(myTabHost.newTabSpec("选项卡3").setIndicator("选项卡3",getResources().getDrawable(R.drawable.img03)).setContent(R.id.ll03));}
Tab内容布局文件:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="fill_parent"android:layout_height="fill_parent"><LinearLayout android:id="@+id/ll01" android:layout_width="fill_parent"android:layout_height="fill_parent" android:gravity="center_horizontal"android:orientation="vertical"><EditText android:id="@+id/widget34" android:layout_width="fill_parent"android:layout_height="wrap_content" android:text="EditText"android:textSize="18sp"></EditText><Button android:id="@+id/widget30" android:layout_width="wrap_content"android:layout_height="wrap_content" android:text="Button"></Button></LinearLayout><LinearLayout android:id="@+id/ll02" android:layout_width="fill_parent"android:layout_height="fill_parent" android:gravity="center_horizontal"android:orientation="vertical"><AnalogClock android:id="@+id/widget36"android:layout_width="wrap_content" android:layout_height="wrap_content"></AnalogClock></LinearLayout><LinearLayout android:id="@+id/ll03" android:layout_width="fill_parent"android:layout_height="fill_parent" android:gravity="center_horizontal"android:orientation="vertical"><RadioGroup android:id="@+id/widget43"android:layout_width="166px" android:layout_height="98px"android:orientation="vertical"><RadioButton android:id="@+id/widget44"android:layout_width="wrap_content" android:layout_height="wrap_content"android:text="RadioButton"></RadioButton><RadioButton android:id="@+id/widget45"android:layout_width="wrap_content" android:layout_height="wrap_content"android:text="RadioButton"></RadioButton></RadioGroup></LinearLayout>
</FrameLayout>
第二种方式,不继承TabActivity,在布局文件中定义TabHost即可,但是TabWidget的id必须是@android:id/tabs,FrameLayout的id必须是@android:id/tabcontent。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/hometabs"android:orientation="vertical"android:layout_width="fill_parent" android:layout_height="fill_parent"> <TabHost android:id="@+id/tabhost"android:layout_width="fill_parent"android:layout_height="wrap_content"><LinearLayoutandroid:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TabWidget android:id="@android:id/tabs" android:orientation="horizontal"android:layout_width="fill_parent"android:layout_height="wrap_content"></TabWidget><FrameLayout android:id="@android:id/tabcontent"android:layout_width="wrap_content"android:layout_height="wrap_content"><TextView android:id="@+id/view1"android:layout_width="fill_parent"android:layout_height="fill_parent" android:text="Tab1"/><TextView android:id="@+id/view2"android:layout_width="fill_parent"android:layout_height="fill_parent" android:text="Tab2"/><TextView android:id="@+id/view3"android:layout_width="fill_parent"android:layout_height="fill_parent" android:text="Tab3"/></FrameLayout></LinearLayout></TabHost>
</LinearLayout>
mainActivity
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);TabHost tabHost = (TabHost) findViewById(R.id.tabhost);tabHost.setup();TabWidget tabWidget = tabHost.getTabWidget();tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("tab1",getResources().getDrawable(R.drawable.img01)).setContent(R.id.view1));tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("tab2",getResources().getDrawable(R.drawable.img02)).setContent(R.id.view2));tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("tab3",getResources().getDrawable(R.drawable.img03)).setContent(R.id.view3));