选项卡控件
作为导航模块快速切换。实现类是TabHost,派生自FrameLayout。选项卡控件包括若干个选项卡Tab,每个选项卡由一个标签Tab Widget,对应的内容界面组成。标签汇聚在TaB Widget中,被选中的呈现在用户面前。
开发者通过TabHost.setCurrentTab函数进行切换。
TabHost.addTab动态添加选项卡,每个选项卡可以用TabHost.TabSpec描述。TabHost.setIndicator为选项卡设置标签,每二个标签由一个图标和一段文字组成。
TabHost.setContent为选项卡设置内容界面。设置内容的方式:
1.通过控件标识id:将选项卡的内容设置为已有的Tab内容,本质上是控制控件的可见性
2.通过选项卡工厂:TabHost.TabContentFactory,将控件内容的构造延迟到用户第一次选择对应的选项卡时进行。节省内存,实现整洁。
以上2中都是控制界面的可见性:本质
3.通过界面组件:利用Intent,将选项卡的内容设置为某个界面组件对象,使得选项卡成为界面组件的集合。最常见的使用方式。
将界面组件整合在选项卡控件中,是利用了本地界面组件的功能。通过LocalActivityManager对象构造界面组件,并将该界面组件预期宿主界面组件建立父子关系。
本地化的界面组件不会被加入到任务栈,也不会支持退栈操作。不会独立被回收,生命周期与父界面组件绑定。
通过Activity.getParent获取父控件对象。还可以通过它实现父子控件的通信:
(TheParentActivity)parent.sendMessageToParent()