2013-08-08 5 views
1

У меня есть TabHost в одном из моих макетов активности с 4 TabSpec. Я установил для каждого TabSpec содержимое другого LinearLayout, но только первый TabSpec фактически отображает LinearLayout. Я много пробовал, но все еще не могу понять, что случилось. Вот мой код:Содержимое TabHost.TabSpec не отображается

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.

ответ

0

Короче говоря, ваши LinearLayout s для tab1, tab2 и tab3 являются дочерними элементами tab1 LinearLayout. Ваши вкладки должны быть братья и сестры друг друга.

Вот некоторые другие предметы, которые могли бы помочь в макете, а также:

  1. Я не совсем уверен, почему LinearLayout с android:id="@+id/linearLayout1" существует, так что я бы удалить его;
  2. Вам не нужно использовать android:layout_alignParentLeft или android:layout_alignParentTop в вашем TabHost, потому что он уже соответствует ширине и высоте родителя, поэтому я удалю эти атрибуты;
  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:

мнение должно быть столь же большим, как его родитель (минус заполнения). Эта константа устарела, начиная с уровня API 8 и заменяется match_parent.

Смежные вопросы