Android Listview - 展开以适应整个屏幕以消除空白区域

时间:2014-06-26 17:51:07

标签: java android listview

我的问题如下:

我目前有一个包含四个元素的列表视图。对于大多数屏幕尺寸,这不会占用整个屏幕,并留下丑陋的未使用空间。我想扩展listview,以便每个项目均匀分布,不留空格,但无法找到解决方案。

以下是我所看到的图片:

example http://i57.tinypic.com/ok8hw7.jpg

我放入的红色箭头表示我希望通过均匀间隔物品来填充下面的空白区域。

listview是非常基本的,没有什么花哨的。以下是我的xml文件中的一些代码:

<ListView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#FFFFFF"
    android:id="@+id/categoryListView"/>

从数据库填充项目。我希望有一个简单的解决方案,但一直找不到。任何人都可以帮我解决问题吗?

3 个答案:

答案 0 :(得分:0)

试试这个:

<ListView
    android:layout_width="match_parent"
    android:layout_height="0dp" //if it is in a vertical linear layout,remove this comment, when using
    android:layout_weight="1"
    android:background="#FFFFFF"
    android:id="@+id/categoryListView"/>

当布局权重为1时,视图会扩展到所有可能的空间。

但这在很大程度上取决于你的项目行xml。

答案 1 :(得分:0)

  

&#34;您将屏幕高度除以屏幕上所需的项目数量。&#34;

@marcelo,你在评论中回答了我的问题所以我不能接受它作为正确的答案,但通过这样做,我能够解决我的问题。这就是我的所作所为:

DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
minHeight = displaymetrics.densityDpi/(listOfCategories.size()-1);

首先,我获得了屏幕的度量值(包括屏幕高度和宽度,但密度是我在这里使用的)。然后我将值minHeight设置为密度除以列表项的数量减1,这很好地填充了屏幕(尽管它将最后一项放到边框 - 我需要稍后添加一点填充)。

然后,我执行以下操作以均匀地分隔列表项:

TextView labelView = (TextView) rowView.findViewById(R.id.label);
labelView.setMinimumHeight(minHeight);

设置最小高度可确保如果列表项很少,则它们将具有一定的高度,该高度已经过计算以均匀分布。

我还添加了一些逻辑,以确保在有更多列表项需要滚动的情况下将minHeight设置为0。例如,如果有超过4个列表项,它们只是从xml文件设置为标准高度,并且不需要额外的间距,在这种情况下minHeight基本上被忽略了。

答案 2 :(得分:-1)

或者您也可以使用:

android:minHeight="?android:attr/listPreferredItemHeight"

在你的xml文件中。

相关问题