防止Android ListView几乎占据所有屏幕高度

时间:2011-03-01 15:09:37

标签: android android-layout android-listview android-linearlayout

我正在尝试在Android中设置一个活动,其中ScrollView的屏幕高度为50%,而ListView为50%。

为此,我将每个人的体重设定为“1”。

喜欢这个:

<LinearLayout android:layout_width="fill_parent"
              android:layout_height="wrap_content"
              android:orientation="vertical"
              android:padding="10dip">


    <ScrollView android:layout_width="fill_parent"
        android:layout_height="0dip"
        android:layout_weight="1">

        <TableLayout android:id="@+id/my_table"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:shrinkColumns="0">

            <TableRow android:padding="5dip"
        android:id="@+id/fault_heading"
        android:layout_width="fill_parent"
            android:layout_height="wrap_content">

            <TextView android:layout_width="fill_parent"
            android:layout_height="wrap_content"
        android:text="@string/table_title"
        android:paddingRight="20dip"/>

            </TableRow>
            <!-- More rows are added at run time. -->

        </TableLayout>

    </ScrollView>

    <ListView android:id="@+id/comments"
              android:layout_width="fill_parent"
              android:layout_height="0dip"
          android:layout_weight="1"></ListView>

</LinearLayout>

如果ScrollView和ListView都有太多内容无法滚动显示,则效果非常好。

当ScrollView只需要20%的屏幕而ListView需要70%时,ListView会增长到70%,因此它可以在不滚动的情况下显示。这不是我预期会发生但是很好。

我遇到的问题是当ListView拥有如此多的数据以至于需要整个屏幕才能显示而Scroll视图中只有1或2行数据。在这种情况下,ListView增长几乎占据整个高度,并为滚动视图留下相当于一行文本的空间。

无论ListView有多大,我似乎无法理解如何为ScrollView保留一定比例的屏幕。

ScrollView可以抓取的空间量似乎与其子表中的行数成正比。当这只有1时,滚动视图的高度只有半厘米左右。

2 个答案:

答案 0 :(得分:4)

如何将android:layout_height更改为最小值而不是0dip

更新:根据下面的评论,解决方案是将外部LinearLayout设置为高度“fill_parent”

答案 1 :(得分:1)

在ListView部分

中使用这些参数
 android:layout_height="0dp" 
 android:layout_weight="1"