Android Tabhost使用(展示不同的Tab页)

当应用程序具有几个不同的功能页时,可以通过使用Tabhost来进行自然地分页展示,与用户友好的交互。


Tabhost的使用包含以下几点内容:

*1.在使用Tabhost控件的Activity(注意要继承自TabActivity)中setContentView(R.layout.main);

其中main.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" >

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TabWidget
android:id="@android:id/tabs"
android:layout_width="match_parent"
android:layout_height=""
android:background=""
android:layout_alignParentBottom="true"
android:orientation="horizontal" />
<FrameLayout
android:id="@android:id/tabcontent"
android:layout_width="fill_parent"
android:layout_above="@android:id/tabs"
android:layout_height="fill_parent" />
</RelativeLayout>
</TabHost>


其中上述几个控件的id不能改动,否则出错。但TabWidget与FrameLayout的位置可以变化,其相对位置取决于开发者的设计,其中TabWidget是代表不同tab页的那个按钮,FrameLayout加载每个不同Tab页的具体Activity。


*2.向TabHost中添加Tab页

Tabhost tabHost = getTabHost();

TabSpec tabSpec = tabHost.newTabSpec(xxxx); //Tab页的具体描述,可以设定自定义的View来描述Tab按钮

tabHost.addTab(tabSpec);


*3. 处理不同tab页切换消息

前述的Activity应实现OnTabChangeListener,覆盖掉OnTabChangeListener的OnTabChanged方法,从而处理当不同tab页切换时的处理动作。


至此,tab页结构已经具有了基本的功能。一下为非必需选项

4. 处理不同Tab页的上下文菜单

覆盖onCreateOptionsMenu(Menu menu),根据不同Tab页Tag的不同,加载不同的菜单。

if(mTabHost.getCurrentTabTag().equals(xxxx"))
{
this.getMenuInflater().inflate(R.menu.xxxx_menu, menu);
}

覆盖

public boolean onOptionsItemSelected(MenuItem item) {
return this.getCurrentActivity().onOptionsItemSelected(item);
}

让每个Tab页的Activity自己处理菜单选中。



你可能感兴趣的:(android)