代码改变世界

Android中TabWidget简单应用

2011-08-24 15:18  Kevin-wang  阅读(915)  评论(1编辑  收藏  举报

         看到很多热门的Android程序(如:新浪微博、腾讯微博、京东商城、淘宝、当当等等)使用选项卡风格作为程序界面的主框架结构,而Android的选项卡控件默认是按钮在上方的。我在网上看到有多种实现方法,这里提供一种个人觉得比较简单的。由于我对Android开发所知甚少,方法的优劣目前不好评价,欢迎各位提供更好的思路。

主要原理:设置 TabWidget 控件的 android:layout_alignParentBottom="true" 实现。

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TabHost android:id="@+id/tabhost" xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <RelativeLayout 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_alignParentBottom="true" />
        <FrameLayout android:id="@android:id/tabcontent"
            android:layout_width="fill_parent" android:layout_height="fill_parent">
            <LinearLayout android:id="@+id/tab1"
                android:layout_width="fill_parent" android:layout_height="fill_parent"
                androidrientation="vertical">
                <TextView android:id="@+id/view1" android:layout_width="wrap_content"
                    android:layout_height="wrap_content" android:text="@string/textView_1" />
                <ListView android:id="@+id/listView1" android:layout_height="wrap_content" android:layout_weight="1" android:layout_width="match_parent"></ListView>
            </LinearLayout>
            <LinearLayout android:id="@+id/tab2"
                android:layout_width="fill_parent" android:layout_height="fill_parent"
                androidrientation="vertical">
                <TextView android:id="@+id/view2" android:layout_width="wrap_content"
                    android:layout_height="wrap_content" android:text="@string/textView_2" />
            </LinearLayout>
            <LinearLayout android:id="@+id/tab3"
                android:layout_width="fill_parent" android:layout_height="fill_parent"
                androidrientation="vertical">
                <TextView android:id="@+id/view3" android:layout_width="wrap_content"
                    android:layout_height="wrap_content" android:text="@string/textView_3" />
            </LinearLayout>
            <LinearLayout android:id="@+id/tab4"
                android:layout_width="fill_parent" android:layout_height="fill_parent"
                androidrientation="vertical">
                <TextView android:id="@+id/view4" android:layout_width="wrap_content"
                    android:layout_height="wrap_content" android:text="@string/textView_4" />
            </LinearLayout>
        </FrameLayout>
    </RelativeLayout>
</TabHost>
</LinearLayout>

TabdemoActivity.java

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);
    setTitle("移动办公Android客户端");
    Resources res = getResources();

    TabHost tabs = (TabHost) findViewById(R.id.tabhost);
    tabs.setup();

    TabHost.TabSpec spec = tabs.newTabSpec("tab1");
    spec.setContent(R.id.tab1);
    spec.setIndicator("待办(5)", res.getDrawable(R.drawable.menu_1));
    tabs.addTab(spec);

    spec = tabs.newTabSpec("tab2");
    spec.setContent(R.id.tab2);
    spec.setIndicator("公告(1)", res.getDrawable(R.drawable.menu_2));
    tabs.addTab(spec);

    spec = tabs.newTabSpec("tab3");
    spec.setContent(R.id.tab3);
    spec.setIndicator("邮件", res.getDrawable(R.drawable.menu_3));
    tabs.addTab(spec);

    spec = tabs.newTabSpec("tab4");
    spec.setContent(R.id.tab4);
    spec.setIndicator("设置", res.getDrawable(R.drawable.menu_4));
    tabs.addTab(spec);
    tabs.setCurrentTab(0);
}

运行效果:

image

代码下载:点击下载