Android 创建自己的TabActivity


首先是布局文件:

<TabHost xmlns:a

ndroid="http://schemas.Android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@android:id/tabhost"
    >
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:padding="5dip"
    >
        <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="wrap_content"
            android:padding="5dip"
        />       
    </LinearLayout>
</TabHost>

注意的是上面的TabHost和TabWidget和FrameLayout中的id要用android系统的id,不能自己定义自己的id。

TabWidget就是TabActivity上面的那个标签。

FrameLayout就是标签下面显示的内容。

下面是java代码

        TabHost tabHost = getTabHost();
        Intent remote = new Intent();
        remote.setClass(this, RemoteMp3ListActivity.class);
        //得到一个TabSpec对象,就相当于一个标签和它的内容
        TabHost.TabSpec remoteSpec = tabHost.newTabSpec("remote");

        //得到一个resources对象,是为了得到系统的图片,让其作为我们的TabHost的标签的图标
        Resources res = getResources();
        remoteSpec.setIndicator("remote", res.getDrawable(android.R.drawable.stat_sys_download));
        remoteSpec.setContent(remote);
        tabHost.addTab(remoteSpec);
       
        Intent local = new Intent();
        local.setClass(this, LocalMp3ListActivity.class);
        //得到一个TabSpec对象,就相当于一个标签和它的内容
        TabHost.TabSpec localSpec = tabHost.newTabSpec("local");
        localSpec.setIndicator("local", res.getDrawable(android.R.drawable.stat_sys_download));
        localSpec.setContent(local);
        tabHost.addTab(localSpec); 

注意当前的activity要继承TabActivity

效果如下图:

相关内容