Android 之TabActivity

刚用到TabActivity,查了很多资料,总结一下。

1、TabActivity存在必要性以及google当时的困扰
a. 首先我们要明白一点,android系统是单窗口系统,不像windows是多窗口的(比如在windows系统上,我们可以一边聊QQ,一边斗地主等等)。也就是说,在一个时刻,android里面只有一个activity可以显示给用户。这样就大大降低了操作系统设计的复杂性(包括事件派发等等).
b. 但是像TabActivity那种效果又非常必要,用户体验也比较好。所以我觉得当时google开发人员肯定很纠结。 于是,一个畸形的想法产生了,就是在单窗口系统下加载多个activity,它就是TabActivity。

   tab组件一般包括TabHostTabWidgetFrameLayout,且TabWidgetFrameLayout属于TabHost

2、TabActivity

  首先Android里面有个名为TabActivity来给我们方便使用。其中有以下可以关注的函数:
   public TabHost getTabHost ()  获得当前TabActivity的TabHost
   public TabWidget getTabWidget () 获得当前TabActivity 的TabWidget
 
   public void setDefaultTab (String tag) 这两个函数很易懂, 就是设置默认的Tab
   public void setDefaultTab (int index)  通过tab名——tag或者index(从0开始)
3、TabHost
  那么我们要用到的Tab载体是TabHost,需要从TabActivity.getTabHost获取。
  现在看看TabHost类,它有3个内嵌类:1个类 TabHost.TabSpec,2个接口 TabHost.TabContentFactoryTabHost.OnTabChangeListener。后面会介绍这些类和接口。
 TabHost类的一些函数:
   public void addTab (TabHost.TabSpec tabSpec) 添加 tab,参数TabHost.TabSpec通过下面的函数返回得到
4、TabHost.TabSpec
  从上面的函数可以知道如何添加tab了,要注意,这里的Tag(标签),不是Tab按钮上的文字。
  而要设置tab的label和content,需要设置TabHost.TabSpec类。 引用SDK里面的话——“A tab has a tab indicator, content, and a tag that is used to      keep track of it.”,TabHost.TabSpec就是管理这3个东西:
   public String getTag ()
   public TabHost.TabSpec setContent
   public TabHost.TabSpec setIndicator
 
  我理解这里的 Indicator 就是Tab上的label,它可以
   设置label :  setIndicator (CharSequence label)
  或者同时 设置label和icon : setIndicator (CharSequence label, Drawable icon)
  或者直接 指定某个view :  setIndicator (View view)

 对于 Content ,就是Tab里面的内容,可以
   设置View的id :  setContent(int viewId)
  或者 TabHost.TabContentFactory 的createTabContent(String tag)来处理: setContent(TabHost.TabContentFactory contentFactory)
  或者用 new Intent 来引入其他Activity的内容: setContent(Intent intent)
TabHost控件(id="@android:id/tabhost")->TabWidget(必须命名为tabs)->FrameLayout(必须命名为tabcontent)。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值