【Android入门】Android TabHost的使用(翻译与Android SDK)

原文地址:

http://developer.android.com/resources/tutorials/views/hello-tabwidget.html

 

 

翻译:

 

你需要一个TabHost和一个TabWidget来创建一个带Tab的界面,TabHost必须是Layout的根节点,该Layout文件还必须包换TabWidget来显示Tabs和一个FrameLayout来显示Tab的内容。

 

Tab内容的实现有两种,1.使用Tabs在同一个活动Activity种切换视图Views,或者使用Tabs来切换不同的活动.使用哪种方法完全取决于你自己的需要,不过如果每个Tab提供完全不同的用户活动,那更优的方法是让每个Tab都使用独立的活动,这样的设计比把所有的东西都写在一个活动和Layout中更方便管理。

 

在这个介绍中,我将为每个Tab创建独立的活动:

 

1.  创建一个名为"HelloTabWidget"的新项目:

 

2.  首先,在你的项目中创建三个独立的活动类,ArtistsActivity,AlbumsActivity和SongsActivity。这些类每个都代表着一个独立的Tab。现在,使用TextView让每个活动都显示一个简单的信息,比如:

 

  •  注意这里没有使用Layout的XML文件,只是创建了一个TextView,给它一段Text并把它设置成内容Content. 给三个活动类都做类似的事情。让后再Android Manifest文件中加入<activity/> 标签。
  •  你需要为每个Tab设置图标,你应该为每个图标创建两个版本,一个为了当这个图标被选择的时候,一个为了未被选择的时候。当然公认推荐的做法是被选择的图标为深色的(灰),未被选择的图标为亮色的(白色),比如:
  •  

     

    white  grey

     

     

    在这个介绍中,你可以复制以上图片并在所有三个Tabs中使用它们(当你在你自己的应用中创建Tabs,你应该创建自定义的Tab 图标)。

    现在创建一个state-list drawable的文件声明为每一个Tab状态State该使用哪张图片:

    1. 把图标文件导入在res/drawable/目录里

    2. 在res/drawable/里创建一个新的名为ic_tab_artists.xml的文件输入代码如下

     

     

    这是一个state-list drawable,你将把它应用程你TAB的图像,当TAB的状态改变,TAB的图标也会自动在这里定义的图像间切换。

     

     

    4. 打开res/layout/main.xml然后输入以下代码

     

    以上创建的Layout是将显示TABS以及提供各活动间导航的Layout.

    Tabhost对象要求在他内部的某个地方要包含有一个TabWidget和一个FrameLayout.为了将TabWidget和FrameLayout垂直摆放,这里使用一个线性布局Linear Layout.FrameLayout是显示每个TAB内容的地方。现在FrameLayout是空的是由于TabHost会自动将活动填充到里面

     

    注意,TabWidget和FrameLayout组件的ID是tabs和tabcontent,这里必须要使用这两个ID,这样TabHost才可以取得它们的引用

     

    5.  现在打开HelloTabWidget.java,使它继承于TabActivity

     

     

    6. 将下列代码作为该类的onCreate()方法

     

    以上代码设置了每个TAB的标题和图标,然后给每个分配了一个活动

    首先TabHost的引用由getTabHost()函数返回。然后,为每个TAB,一个TabHost.TabSpec对象被创建用来定义TAB的属性。方法newTabSpec(String)被用来创建一个新的标识为输入的字符串的TabHost.TabSpec对象。为每个Tab,setIndicator(CharSequence,Drawable)方法被调用来定义该TAB得标题和图标。setContent(Intent)被调用用来指定打开适当活动的Intent。然后每个TabHost.TabSpec通过调用addTab(TabHost.TabSpec)方法被添加到TabHost。

     

    在最后,setCurrentTab(int)方法定义了默认被选中显示的Tab,输入的INT值为被默认选中的TAB的索引位置。

     

    注意到TabWidget对象没有被引用过。这是因为一个TabWidget对象一定一直是一个你用来完成几乎所有和TABS有关互动的TabHost的一个孩子。所以当一个TAB被添加到TabHost的时候,他也会自动被添加到孩子TabWidget里。

     

    7.  现在打开Android Manifest文件,添加NoTitleBar主题到HelloTabWidget的<activity>标签内,这将会自动去除默认的应用程序顶部的标题,给Tabs提供更多的空间,现在<activity>标签看起来应该是这样的:

     


     

    8.  运行程序

    你的程序大致上应该是这样滴!

    demo

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值