Android Tab的使用总结 转

西木 2012-12-13

使用TabHost 可以在一个屏幕间进行不同版面的切换,例如android自带的拨号应用。 

完成一个TabHost的步骤:

一、设计布局文件,Tabhost布局文件一般使用FrameLayout,在FrameLayout中添加每个Tab页面的视图,但必须要有id,例如:

<?xmlversion="1.0"encoding="utf-8"?>

<FrameLayoutxmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="fill_parent"android:layout_height="fill_parent">

<!--第一个Tab对应的布局-->

<!--Tab内容必须用Layout布局将view包含,否则在程序中找不到View-->

<LinearLayoutandroid:id="@+id/tab01"

android:layout_width="fill_parent"android:layout_height="fill_parent"

android:orientation="vertical">

<ListViewandroid:id="@+id/weather"android:layout_width="fill_parent"

android:layout_height="fill_parent">

</ListView>

</LinearLayout>

<!--第二个Tab对应的布局-->

<LinearLayoutandroid:id="@+id/tab02"

android:layout_width="fill_parent"android:layout_height="fill_parent"

android:orientation="vertical">

<TextViewandroid:id="@+id/weath_detail"

android:layout_width="fill_parent"android:layout_height="fill_parent"

android:text="tab">

</TextView>

</LinearLayout>

<!--第三个Tab对应的布局-->

<LinearLayoutandroid:id="@+id/tab03"

android:layout_width="fill_parent"android:layout_height="fill_parent"

android:orientation="vertical">

<TextViewandroid:id="@+id/city_detail"android:layout_width="fill_parent"

android:layout_height="fill_parent"android:text="tab">

</TextView>

</LinearLayout>

</FrameLayout>

注意:每个Tab页面都要有自己的layout,负责在代码中通过Id无法找到相对应的视图

二、创建展示TabHost的Activity。

1、我们可以直接继承TabActivity,再通过getTabHost()方法得到TabHost对象。例如:

protectedvoidonCreate(BundlesavedInstanceState)

{

super.onCreate(savedInstanceState);

myTabHost=this.getTabHost();

//绑定布局文件

LayoutInflater.from(this).inflate(R.layout.tab_host,

myTabHost.getTabContentView(),

true);

initTabHost();

setTitle(weather.getCityName());

//设定显示内容

setContentView(myTabHost);

}

2,为TabHost添加要显示的tab,一个tab就是相应的一个选项卡。例如:

//添加tab

myTabHost.addTab(myTabHost.newTabSpec(TAB_1)//tab的Tag

.setIndicator("城市天气")//tab的标题

.setContent(R.id.tab01));//tab的显示内容

myTabHost.addTab(myTabHost.newTabSpec(TAB_2)

.setIndicator("天气详情")

.setContent(R.id.tab02));

myTabHost.addTab(myTabHost.newTabSpec(TAB_3)

.setIndicator("城市介绍")

.setContent(R.id.tab03));

3,为Tabhost添加选项卡改变监听,在选项卡改变时做相应处理。例如:

//添加OnTabChangedListener监听,此监听为选项卡改变监听

myTabHost.setOnTabChangedListener(this);

监听处理方法

publicvoidonTabChanged(StringtabId)

{

if(tabId.equals(TAB_1))

{

//初始化标签1

initTab1();

}

elseif(tabId.equals(TAB_2))

{

//初始化标签2

initTab2();

}

elseif(tabId.equals(TAB_3))

{

//初始化标签3

initTab3();

}

}

4,修改Tab显示内容

privatevoidinitTab2()

{

//得到tab内容的视图

TextViewweathDetailText=(TextView)findViewById(R.id.weath_detail);

weathDetailText.setText(weather.getLiveWeather());

}

相关推荐