在android中的Tab下有标签

时间:2012-11-22 01:17:13

标签: android android-layout android-widget android-tabhost

我想在标签下放置标签。基本上我有一个父标签说Tab1和Tab2。在Tab1下我想要另外两个标签:Tab1a和Tab1b以​​及Tab2下面的2个标签。我有以下xml文件结构:

<?xml version="1.0" encoding="utf-8"?>

<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/tabHost"
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen">

<TabWidget 
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@android:id/tabs"
android:tabStripEnabled="false"     
android:background="@drawable/tabwstyle"/>

<FrameLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@android:id/tabcontent">


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    android:paddingTop="60dp"
    android:id="@+id/tab1">     

    <TabHost 
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/tabHost_pb">

        <TabWidget 
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@android:id/tabs"
            android:tabStripEnabled="false"     
            android:background="@drawable/tabwstyle"/>

        <LinearLayout 
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical" 
            android:paddingTop="60dp"
            android:id="@+id/tab1a">


                <FrameLayout 
                    android:id="@+id/frame1"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent">

                <ListView
                    android:id="@+id/listview"
                    android:layout_width="fill_parent"    
                    android:layout_height="wrap_content" 
                    android:divider="@drawable/divider"
                    android:dividerHeight="10dp" 
                    android:paddingTop="15dp"
                    android:smoothScrollbar="true"/>

                </FrameLayout>

                <FrameLayout 
                    android:id="@+id/frame2"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:visibility="gone">
                <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="50dp"
                    android:text="@string/testtxt"
                    android:id="@+id/frame2text"/>
                </FrameLayout>

        </LinearLayout>    


        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical"
            android:paddingTop="60dp"
            android:id="@+id/tab1b">

            <TextView
                android:layout_width="fill_parent"
                android:layout_height="50dp"
                android:text="@string/testtxt"
                android:id="@+id/tab1btext"/>

        </LinearLayout>

    </TabHost>


</LinearLayout>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    android:paddingTop="60dp"
    android:id="@+id/tab2">

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="50dp"
        android:text="@string/testtxt"
        android:id="@+id/tab2text"/>

</LinearLayout>

 </FrameLayout>
 </TabHost>

我想做的java代码:

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

    tabhost.getTabWidget().setDividerDrawable(R.drawable.divider2);             

    TabSpec spec1=tabhost.newTabSpec("Tab 1");
    spec1.setContent(R.id.tab1);
    spec1.setIndicator("Pain Box");

    TabSpec spec2=tabhost.newTabSpec("Tab 2");
    spec2.setIndicator("Pain List");
    spec2.setContent(R.id.tab2);

    tabhost.addTab(spec1);
    tabhost.addTab(spec2);             

    //Keep below after Add spec or crash 
    tabhost.getTabWidget().getChildTabViewAt(0).setBackgroundDrawable(null);
    tabhost.getTabWidget().getChildTabViewAt(1).setBackgroundDrawable(null);

    TabHost tabhost_pb=(TabHost) findViewById(R.id.tabHost_pb);
    tabhost_pb.setup();

    tabhost_pb.getTabWidget().setDividerDrawable(R.drawable.divider2);

    TabSpec spec_pb1=tabhost_pb.newTabSpec("Tab1a");
    spec_pb1.setContent(R.id.tab1a);
    spec_pb1.setIndicator("All");

    TabSpec spec_pb2=tabhost_pb.newTabSpec("Tab1b");
    spec_pb2.setContent(R.id.tab1b);
    spec_pb2.setIndicator("Followers");

    tabhost_pb.addTab(spec_pb1);
    tabhost_pb.addTab(spec_pb2);

    tabhost_pb.getTabWidget().getChildTabViewAt(0).setBackgroundDrawable(null);
    tabhost_pb.getTabWidget().getChildTabViewAt(1).setBackgroundDrawable(null);

现在,当我评论第一个标签下面的所有部分时,代码工作正常。评论从以下开始的所有行: TabHost tabhost_pb=(TabHost) findViewById(R.id.tabHost_pb);

所以当我评论我的标签没有在Tab1下呈现但他们留下了空格

1 个答案:

答案 0 :(得分:2)

关于Stackoverflow上发布的嵌套标签有一个类似的问题.. Here is the link ..这可能会有所帮助。