一、TabHost是一个选项卡容器,通过标签页将多个Activity整合到一起。
TabHost的三要素为:TabWidget、FrameLayout、List<TabSpec>。
其主要的使用方式有两种: 1.继承TabActivity,结合对应的xml配置文件导入tab选项内容体
2.继承Activity,结合拥有TabHost标签的xml配置文件导入
第一种方式:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <LinearLayout android:id="@+id/tab1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/view1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TabHost 1" /> </LinearLayout> <LinearLayout android:id="@+id/tab2" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:id="@+id/view2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TabHost 2" /> </LinearLayout> <LinearLayout android:id="@+id/tab3" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/view3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TabHost 3" /> </LinearLayout> <LinearLayout android:id="@+id/tab4" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TextView android:id="@+id/view4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="TabHost 4" /> </LinearLayout> </LinearLayout>
public class MainActivity extends TabActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //获得TabHost对象 TabHost tb=this.getTabHost(); LayoutInflater.from(this).inflate(R.layout.activity_main, tb.getTabContentView(), true); //setIndicator方法设置选项卡的标题和对应图标 setContent设置对应的内容 tb.addTab(tb.newTabSpec("spec1").setIndicator("选项卡1",getResources().getDrawable(R.drawable.audio)).setContent(R.id.tab1)); tb.addTab(tb.newTabSpec("spec2").setIndicator("选项卡2",getResources().getDrawable(R.drawable.folder)).setContent(R.id.tab2)); tb.addTab(tb.newTabSpec("spec3").setIndicator("选项卡3",getResources().getDrawable(R.drawable.image)).setContent(R.id.tab3)); } }
第二种方式:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <TabHost android:id="@+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" > <LinearLayout android:id="@+id/tab1" android:layout_width="match_parent" android:layout_height="match_parent" > </LinearLayout> <LinearLayout android:id="@+id/tab2" android:layout_width="match_parent" android:layout_height="match_parent" > </LinearLayout> <LinearLayout android:id="@+id/tab3" android:layout_width="match_parent" android:layout_height="match_parent" > </LinearLayout> </FrameLayout> </LinearLayout> </TabHost> </LinearLayout>
其中 TabWidget、FrameLayout的名字必须是固定的。
public class MainActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TabHost tb=(TabHost)findViewById(R.id.tabhost); tb.setup(); TabHost.TabSpec spec1=tb.newTabSpec("tab1"); spec1.setContent(R.id.tab1); spec1.setIndicator("选项卡一"); tb.addTab(spec1); TabHost.TabSpec spec2=tb.newTabSpec("tab2"); spec2.setContent(R.id.tab2); spec2.setIndicator("选项卡二"); tb.addTab(spec2); TabHost.TabSpec spec3=tb.newTabSpec("tab3"); spec3.setContent(R.id.tab3); spec3.setIndicator("选项卡三"); tb.addTab(spec3); } }
Tabhost中的常用方法:
getTag():获取标签字符串
getCurrentTab():获取当前选项卡ID
getTabWidget():根据系统规定的id:tabs来找到Tabwidget
setOnTabChangedListener():change事件
时间: 2024-09-20 08:01:32