我的一个活动布局中有一个带有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。
答案 0 :(得分:0)
简而言之,tab1,tab2和tab3的LinearLayout
是tab1 LinearLayout
的子项。 您的标签应该都是彼此的兄弟姐妹。
以下是其他一些可能对您的布局有帮助的项目:
LinearLayout
与android:id="@+id/linearLayout1"
存在,所以我会删除它; android:layout_alignParentLeft
中使用android:layout_alignParentTop
或TabHost
,因为它已经与父级的宽度和高度相匹配,因此我会移除这些属性; 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。