标签组件的主要功能是进行应用程序分类管理,例如,在用户使用Windows操作系统时,经常见到如图7-44所示的图形界面。
7-44
这种界面的主要特点是可以在一个窗口中显示多组标签的内容,在android系统中,每个标签栏称为一个Tab,而包含多个标签的容器就称为TabHost 。TabHost类的继承结构如下:
java.lang.Object
android.View.ViewGroup
android.widget.FrameLayout
android.widget.TabHost
通过继承结构可以发现,TabHost类是FrameLayout(帧布局、框架布局)的子类,该类中的常用方法如表7-25所示
表7-25TabHost类中的常用方法
public TabHost(Context context) 创建TabHost类对象
public void addTab(TabHost.TabSpec tabSpec) 增加一个Tab
public TabHost.TabSpec newTabSpec(String tag) 创建一个TabHost.TabSpec对象
public View getCurrentView() 取得当前的View对象
public void setup() 建立TabHost对象
public void setCurrentTab(int index) 设置当前显示的Tab编号
public void setCurrentTabByTag(String tag) 设置当前显示的Tab名称
public FrameLayout getTabContentView() 返回标签容器
public void setOnTabChangedListener(TabHost.OntabChangeListener1) 设置标签改变时触发
要想实现标签显示界面,有二种方式可供选择。
方式一:直接让一个activity程序继承TabActivity类
方式二:利用findViewById()方法取得TabHost组件,并进行若干配置。
(1)直接继承TabActivity 类
要想实现标签界面的功能,最简单的方法是让一个Activity程序直接继承TabActivity类,此类的继承结构如下:
java.lang.Object
android.content.ContextWrapper
android.view.ContextThemeWrapper
android.app.Activity
android.app.ActivityGroup
android.app.TabActivity
TabActivity类中定义的常用方法如表7-26所示。
public TabActivity() 无参构造,方便子类继承时调用
public TabHost getTabHost() 取得TabHost类中的对象
如果一个Activity程序继承了TabActivity类,则可以直接利用getTabHost()方法取得一个TabHost类的对象
在标签界面显示时,由于不是直接通过《TabHost》元素在布局管理器中定义的组件形式,所以无法使用findViewById()方法进行TabHost对象的实例化,那此时可以通过Layoutlnflater类完成布局管理器中定义组件的实例化操作(这与实现定制对话框的操作是不一样的),如图7-45
图7-45 Layoutlnflater类的功能