android中TabHost使用

工作中常常使用到TabHost切换页面(一个界面看起来有多个页面显示)我们要注意两个概念:

1.TabHost是标签页的集合

2.TabSpec是标签

当我们得到TabHost对象后,可以使用addTab(tabspec)添加多个标签页.直接上实例代码..

<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/tabhost"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="horizontal" >

        <TabWidget
            android:id="@android:id/tabs"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />

        <FrameLayout
            android:id="@android:id/tabcontent"
            android:layout_width="fill_parent"
            android:layout_height="0dp"
            android:layout_weight="1" >

            <!-- 热门视频 -->

            <LinearLayout
                android:id="@+id/line1"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" >

                <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:text="热门视频" />
            </LinearLayout>
            <!-- 个人视频 -->

            <LinearLayout
                android:id="@+id/line2"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" >

                <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:text="个人视频" />
            </LinearLayout>
        </FrameLayout>
    </LinearLayout>
</TabHost>

这里解释下..使用帧布局的目的是用于内容的显示...并且将设置权重为1,用来填满剩余的空间

然后我们可以在MainActivity中

第一步:我们要找到TabHost...

根据之前已经定义好的id,这里用的是自己定义的id.而不是系统的@android :id/tabhost,

mTabHost=(TabHost) findViewById(R.id.tabhost);

第二步:我们要找到TabWidget标签页和FrameLayout(这一步很重要)

mTabHost.setup();

这是TabHost内部的一个方法作用就是找到TabWidget标签页和FrameLayout,可以在源码中setup()可以查看,

注意的是TabWidget和FrameLayout分别对应的id是@android :id/tabs,@android :id/tabcontent

第三步:使用addTab(tabspec)添加标签页了

TabSpec tabSpec1=mTabHost.newTabSpec("tab1");
tabSpec1.setIndicator("热门视频",getResources().getDrawable(R.drawable.ic_launcher));
tabSpec1.setContent(R.id.line1);
mTabHost.addTab(tabSpec1);

这里要说明下:为什么mTabHost.newTabSpec("tab1");为什么要加参数呢?

这是因为里面的参数表示标签页的唯一识别.

当然标签页中还没有内容,还要指定标签页的标题和内容,

tabSpec1.setIndicator();表示表明表项(表示了什么.代表了什么),这里传递图片和文字.

tabSpec1.setContent(R.id.line1);设置标签页的内容

效果显示如下:

android中TabHost使用

 

简单吧。下一章介绍自定义的TabHost.

你可能感兴趣的:(android,tabhost,tabhost)