ListView没有空间在较小的屏幕上显示内容

时间:2013-07-31 17:00:59

标签: android android-listview scroll

所以我正在开发一个屏幕,顶部有一些图像和按钮,下面是一个列表视图,显示了一些活动的列表。

设计是这样的: - design

现在在较小的屏幕上,ListView高度变得非常小,因为上面的图标和图像占用了屏幕空间。

那么我怎样才能增加Linearlayout或ListView的高度,以便用户可以滚动到查看ListView的其余部分。

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

     <ListView
        android:id="@+id/listArea"
        android:layout_width="match_parent"
        android:layout_height="fill_parent"
        android:paddingLeft="@dimen/list_padding"
        android:paddingRight="@dimen/list_padding" />
</LinearLayout>

编辑:尝试使用顶视图作为List的标题,但由于我也想要一个EmptyView,这会产生一个问题,因为它取代了整个标题+ listview

2 个答案:

答案 0 :(得分:1)

从我读到的有关该问题的内容中,您应将顶部的视图指定为header of the list,并且会正确滚动。

Afaik只有在列表非空时才有效,因为空视图会替换整个列表,包括标题。

答案 1 :(得分:0)

您可以使用weightSumlayout_weight属性来控制子视图占用的父级可用空间量。要使用这些,父级布局(例如,LinearLayout)将获取android:weightSum属性。每个子布局都会获得android:layout_weight属性,其中所有子权重的总和是父级的weightSum。此外,每个孩子的layout_heightlayout_width都应设置为0dp,具体取决于权重。

以下是基于图表的示例。假设您希望两个顶视图分别占据屏幕的1/4,而ListView占据下半部分。将android:weightSum="4"添加到LinearLayout,将android:layout_weight="1"添加到您使用...Other Layouts...表示的两个子布局,将android:layout_weight="2"添加到ListView。代码可能如下所示:

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

    <ImageView
        android:layout_weight="1"
        android:layout_height="0dp"
        ...some other attributes.../>

    <LinearLayout
        android:layout_weight="1"
        android:layout_height="0dp"
        android:orientation="horizontal"
        ...some other attributes...>
        ...some children of the LinearLayout...
    </LinearLayout>

    <ListView
        android:id="@+id/listArea"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:paddingLeft="@dimen/list_padding"
        android:paddingRight="@dimen/list_padding" 
        android:layout_weight="2"/>

</LinearLayout>