2024年3月9日发(作者:)

修炼-------------Android TabHost,TabWidget选项卡总结

Android之TabHost

TabHost,个人理解为选项卡的容器,是一种特殊的FrameLayout布局(帧布局)

根据SDK文档,

Container for a tabbed window view. This object holds two children: a set

of tab labels that the user clicks to select a specific tab, and a

FrameLayout object that displays the contents of that page. The individual

elements are typically controlled using this container object, rather

than setting values on the child elements themselves。

TabHost主要由两部分组成,标签和内容,其中内容是一个FrameLayout,当用户

单击不同的标签可以显示不同的内容。使用标签可以达到分页的效果,是页面的

内容更加丰富,更加具有亲和力,当然与此同时,也会增加页面的复杂程度.

一个简单的TabHost布局

1.首先继承TabActivity

2.通过TabActivity的getTabHost()方法得到一个TabHost对象

3.定义选项卡的内容(是一个FrameLayout的对象),并与TabHost绑定起来

可以通过一下语句绑定TabHost容器的内容

(this).inflate(,

ContentView(), true);

4.添加选项卡及设置选项的标题及内容

我们知道添加选项卡需要指定一个TabSpec对象,通过TabHost的

newTabSpec(选项卡的标识)可以得到,并且可以设定选项卡的标题(可以设置图

片),并且设置选项卡内容,如

(Spec("tab01")

.setIndicator("标签1",getResources().getDrawable())

.setContent(01));

...

效果图:

源码: (43.15 KB, 下载次数: 4)

初学者注意了:

如果在 继承了TabActivity的类中设置了,setContentView(),则有可能导致错

误,原因可能是因为main布局文件设置不正确(下面有详解),解决办法是建议先删除此行

上面的例子中TabHost只是与一个布局容器绑定,也就是说各个选项卡的内容是

写在一个布局文件中的,然后通过不同的id来区分各个选项卡的内容.

如果选项卡的个数过多,或者每个选项卡的布局比较复杂的话,势必会使布局容

器显得臃肿而且可读性比较差,不利于后期的维护。

Android中提供了我们还可以通过setContent(Intent intent)来指定每个选项

卡的内容

源码:

有时候我们需要将选项卡的标题设置的更加个性化,虽然我们知道了

setIndicator()方法可以设置选项卡的标题的时候可以指定图片,但都是图片在

下,文字在图片上方,我们能不能设置成文字在图片下方,或者文字在图片右边

呢?

当然可以,android中的setIndicator()方法总共有如下三种形式:

c setIndicator(CharSequence label)

c setIndicator(CharSequence label, Drawable icon)

c setIndicator(View view)

前两种就不说了,想必现在大家都熟悉了。

主要说说第三种,第三种中,方法的参数是一个View,想必大家想在已经知道一

些蹊跷了吧. 好的,废话不多说,

直接上源码

源码: