TabActivity & TabHost

 

tabActivity继承自Activity,其内部定义好了TabHost,可以通过getTabHost()获取。TabHost 包含了两种子元素:一些可以自由选择的Tab 和tab对应的内容tabContentto,在Layout的<TabHost>下它们分别对应 TabWidget和FrameLayout。

创建Layout 

  这里需要注意的是不管你是使用TabActivity 还是自定义TabHost,都要求以TabHost作为XML布局文件的根。
<?xml version="1.0" encoding="utf-8"?>
<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" />
        <FrameLayout android:id="@android:id/tabcontent"
            android:layout_width="fill_parent" android:layout_height="fill_parent">

                    <!--省略部分代码-->

            <TextView android:id="@+id/no_team_meetings"
                android:textSize="18sp" android:layout_width="fill_parent"
                android:layout_height="fill_parent" />

            <TextView android:id="@+id/no_team_meeting_stats"
                android:textSize="18sp" android:layout_width="fill_parent"
                android:layout_height="fill_parent" />
        </FrameLayout>
    </LinearLayout>
</TabHost>
 

通常我们采用线性布局,所以<TabHost> 的子元素是 <LinearLayout>。<TabWidget>对应Tab。<FrameLayout>则用于包含Tab需要展示的内容。需要注意的是<TabWidger> 和<FrameLayout>的Id 必须使用系统id,分别为android:id/tabs 和 android:id/tabcontent 。因为系统会使用者两个id来初始化TabHost的两个实例变量(mTabWidget 和 mTabContent)。

 

 

 

 

编写Java代码

  我们可以采用两种方法编写标签页:一种是继承TabActivity ,然后使用getTabHost()获取TabHost对象;第二种方法是使用自定的TabHost在布局文件上<TabHost>的自定义其ID,然后通过findViewById(),方法获得TabHost对象。
  本文中采用继承TabActivity的方法。
private void createTabs() {
        TabHost tabhost=getTabHost();
        tabhost.addTab(tabhost.newTabSpec("stats_tab").
                setIndicator(CharSequence label).
                setContent( int viewId);
        
        tabhost.addTab(tabhost.newTabSpec("meetings_tab").
                setIndicator(CharSequence label).
                setContent( int viewId);
        getTabHost().setCurrentTab(0);
}
 
Java代码中我们首先需要做的是获取TabHost对象,可以通过TabActivtiy里的getTabHsot()方法。如果是自定义TabHost,在添加Tabs前 应该调用 setUp()方法。
mTabHost = (TabHost)findViewById(R.id.tabhost);
mTabHost.setup();
mTabHost.addTab(TAB_TAG_1, "Hello, world!", "Tab 1");
 

 

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