我有两个TableLayout的在我的Android应用程序。我希望我的应用程序的一半是静态的,总是显示,而另一个是可滚动的。当我在Android手机上构建和运行我的应用时,下半部(TableLayout 2)根本没有出现。这是我的xml文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tableLayout1"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbarAlwaysDrawVerticalTrack="true"
android:scrollbars="vertical"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Module 1"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:gravity="center"
android:inputType="number"
android:maxLength="3" >
<requestFocus />
</EditText>
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Module 2"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/editText2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:maxLength="3"
android:inputType="number" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Module 3"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/editText3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:maxLength="3"
android:inputType="number" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Module 4"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/editText4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:maxLength="3"
android:inputType="number" />
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Module 5"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/editText5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:maxLength="3"
android:inputType="number" />
<TextView
android:id="@+id/textView6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Module 6"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/editText6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:maxLength="3"
android:inputType="number" />
<TextView
android:id="@+id/textView7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Module 7"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/editText7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:maxLength="3"
android:inputType="number" />
<TextView
android:id="@+id/textView8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Module 8"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/editText8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:maxLength="3"
android:inputType="number" />
</TableLayout>
</ScrollView>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tableLayout2"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textView9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Total"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/editText9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:enabled="false"
android:inputType="number" />
<TextView
android:id="@+id/textView10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="Classification"
android:textAppearance="?android:attr/textAppearanceLarge" />
<EditText
android:id="@+id/editText10"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:enabled="false"
android:inputType="number" />
<EditText
android:id="@+id/editText11"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ems="10"
android:enabled="false" />
</TableLayout>
</LinearLayout>
我做错了什么?抱歉,如果它是琐碎的,我今天才开始开发这个,我对这一切都非常陌生。
您的ScrollView
有android:layout_height="fill_parent"
,这意味着它将填充整个LinearLayout
,不为您的第二个表布局留下任何空间。你想要的是让它填充固定表布局2的空间被占用后剩下的所有空间。
要做到这一点,您需要设置LinearLayout
的layout_weight
属性:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="1" >
...
</ScrollView>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tableLayout2"
android:layout_width="match_parent"
android:layout_height="wrap_content" >
...
</TableLayout>
任何没有weight
的视图将只占用它们分配的高度(在这种情况下,我们希望它是wrap_content
,只占用尽可能多的空间)。而带有权重的视图则会按权重比例拆分剩余的高度(即1权重和2权重分别为1/3高度和2/3高度)。
您的LinearLayout
有android:orientation="vertical"
,但它的第一个子ScrollView
有android:layout_height="fill_parent"
,这意味着它将接管其父级的全部高度,因此第二个子(tableLayout2
)将没有剩余空间显示。
你可能想为ScrollView
和tableLayout2
设置android:layout_height="wrap_content"