TabHost.TabSpec内容未显示

时间:2013-08-08 00:20:31

标签: java android xml tabs android-tabhost

我的一个活动布局中有一个带有4个TabSpec的TabHost。我已将每个TabSpec的内容设置为不同的LinearLayout,但只有第一个TabSpec实际显示LinearLayout。我尝试了很多东西,但仍然无法弄清楚出了什么问题。这是我的代码:

 public class ConversionActivity extends Activity {
PhConversion phc = new PhConversion();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_conversions);
    TabHost th = (TabHost) findViewById(R.id.tabhost);
    th.setup();
    TabSpec spec1 = th.newTabSpec("TAB 1");
    spec1.setContent(R.id.tab1);
    spec1.setIndicator("pH");
    TabSpec spec2 = th.newTabSpec("TAB 2");
    spec2.setIndicator("Temp");
    spec2.setContent(R.id.tab2);
    TabSpec spec3 = th.newTabSpec("TAB 3");
    spec3.setContent(R.id.tab3);
    spec3.setIndicator("Length");
    TabSpec spec4 = th.newTabSpec("TAB 4");
    spec4.setContent(R.id.tab4);
    spec4.setIndicator("Volume");
    th.addTab(spec1);
    th.addTab(spec2);
    th.addTab(spec3);
    th.addTab(spec4);

和XML代码:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:gesture-image="http://schemas.polites.com/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".ConversionActivity" >

<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:orientation="horizontal" >

    <LinearLayout
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="8"
        android:orientation="vertical" >
    </LinearLayout>
</LinearLayout>

<TabHost
    android:id="@+id/tabhost"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical" >

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

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

            <LinearLayout
                android:id="@+id/tab1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:orientation="vertical" >

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/given"
                    android:textSize="32sp" >
                </TextView>

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" >

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/ph"
                        android:textSize="20sp" >
                    </TextView>

                    <CheckBox
                        android:id="@+id/phBox"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:onClick="disableOthersPH" >
                    </CheckBox>

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/poh"
                        android:textSize="20sp" >
                    </TextView>

                    <CheckBox
                        android:id="@+id/pohBox"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:onClick="disableOthersPOH" >
                    </CheckBox>

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/h"
                        android:textSize="20sp" >
                    </TextView>

                    <CheckBox
                        android:id="@+id/hBox"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:onClick="disableOthersH" >
                    </CheckBox>

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/oh"
                        android:textSize="20sp" >
                    </TextView>

                    <CheckBox
                        android:id="@+id/ohBox"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:onClick="disableOthersOH" >
                    </CheckBox>
                </LinearLayout>

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" >

                    <EditText
                        android:id="@+id/phconvinput"
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_weight="5"
                        android:inputType="numberDecimal" >
                    </EditText>

                    <Button
                        android:layout_width="0dp"
                        android:layout_height="wrap_content"
                        android:layout_weight="2"
                        android:onClick="solveph"
                        android:text="@string/phsolvebutton" >
                    </Button>
                </LinearLayout>

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/phsolution"
                    android:textSize="32sp" >
                </TextView>

                <LinearLayout
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical" >

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal" >

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@string/ph"
                            android:textSize="20sp" >
                        </TextView>

                        <TextView
                            android:id="@+id/phanswer"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@string/somespace"
                            android:textSize="20sp" >
                        </TextView>
                    </LinearLayout>

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal" >

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@string/poh"
                            android:textSize="20sp" >
                        </TextView>

                        <TextView
                            android:id="@+id/pohanswer"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@string/somespace"
                            android:textSize="20sp" >
                        </TextView>
                    </LinearLayout>

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal" >

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@string/h"
                            android:textSize="20sp" >
                        </TextView>

                        <TextView
                            android:id="@+id/hanswer"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@string/somespace"
                            android:textSize="20sp" >
                        </TextView>
                    </LinearLayout>

                    <LinearLayout
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:orientation="horizontal" >

                        <TextView
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@string/oh"
                            android:textSize="20sp" >
                        </TextView>

                        <TextView
                            android:id="@+id/ohanswer"
                            android:layout_width="wrap_content"
                            android:layout_height="wrap_content"
                            android:text="@string/somespace"
                            android:textSize="20sp" >
                        </TextView>
                    </LinearLayout>

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/phsolution"
                        android:textSize="32sp" >
                    </TextView>

                    <ImageView
                        android:id="@+id/what"
                        android:layout_width="fill_parent"
                        android:layout_height="wrap_content"
                        android:src="@drawable/phschem" />
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/tab2"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical" >

                    <TextView
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="@string/hello_world"
                        android:textSize="32sp" >
                    </TextView>
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/tab3"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="vertical" >
                </LinearLayout>

                <LinearLayout
                    android:id="@+id/tab4"
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                    android:orientation="horizontal" >
                </LinearLayout>
            </LinearLayout>
        </FrameLayout>
    </LinearLayout>
</TabHost>

我意识到标签3和标签4是空的,但是当我点击它时,标签2仍然显示为空白,只有标签1显示正确的LinearLayout。

1 个答案:

答案 0 :(得分:0)

简而言之,tab1,tab2和tab3的LinearLayout是tab1 LinearLayout的子项。 您的标签应该都是彼此的兄弟姐妹

以下是其他一些可能对您的布局有帮助的项目:

  1. 我不确定为什么LinearLayoutandroid:id="@+id/linearLayout1"存在,所以我会删除它;
  2. 您不需要在android:layout_alignParentLeft中使用android:layout_alignParentTopTabHost,因为它已经与父级的宽度和高度相匹配,因此我会移除这些属性;
  3. 您在android:layout_width="fill_parent"上使用ImageView。相反,您应该使用match_parent因为fill_parent已弃用。请参阅http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html#attr_android:layout_height,其中说明fill_parent
  4.   

    视图应该与其父视图一样大(减去填充)。从API级别8开始不推荐使用此常量,并将其替换为match_parent。