tab in android

android里提供了tab显示的机制。既可以继承TabActivity类也可以自己直接在普通的Activity中实现。下面讲讲这2种方法的相似和不同。

1.继承TabActivity

   首先需要得到一个TabHost对象,在TabActivity中可以通过getTabHost()方法来获得TabHost对象,getTabHost的源码如下:

public TabHost getTabHost() {
            ensureTabHost();
             return mTabHost;

      }

private void ensureTabHost() {
        if (mTabHost == null) {
            this.setContentView(com.android.internal.R.layout.tab_content);
        }
    }

事实上在TabActivity中已经给你指定好了一个layout来专门用作tab显示,com.android.internal.R.layout.tab_content的原型如下:

<TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/tabhost"
 android:layout_width="fill_parent" android:layout_height="fill_parent">
 <LinearLayout android:orientation="vertical"
     android:layout_width="fill_parent" android:layout_height="fill_parent">
        <TabWidget android:id="@android:id/tabs" android:layout_width="fill_parent"
         android:layout_height="wrap_content" android:layout_weight="0" />
        <FrameLayout android:id="@android:id/tabcontent"
         android:layout_width="fill_parent" android:layout_height="0dip"
            android:layout_weight="1"/>
 </LinearLayout>
</TabHost>

这里面必须包含3个元素,LinearLayout,TabWidget以及FrameLayout,我猜测TabWidget应该就是显示标签的组件,而FrameLayout是可以重叠覆盖的,因而当你选择某个标签的时候,其相应的内容就显示到framelayout里面,那么之前的标签页就被覆盖掉了。

然后你需要在framelayout上面来添加你自己想显示的view,通常的方式是你自己定义一个layout,然后inflate他并把framelayout作为他的rootgroup,

        LayoutInflater inflater_tab1 = LayoutInflater.from(this);  
        inflater_tab1.inflate(R.layout.tab1, mTabHost.getTabContentView());

最后需要在TabHost中添加你的Tab

调用mTabHost.addTab方法即可,这个方法能够在tab中显示文字,图片以及tab下显示的视图。

2.在Activity中实现

    这里你需要自己来实现TagHost的layout,可以在layout.main中添加TabHost元素,但是注意的是,必须实现上面所说的3个组件,而且注意id应该是系统所指定的那些id。而余下的事情就和上面类似了。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值