Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/178.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android Listview-扩展以适应整个屏幕以消除空白_Java_Android_Listview - Fatal编程技术网

Java Android Listview-扩展以适应整个屏幕以消除空白

Java Android Listview-扩展以适应整个屏幕以消除空白,java,android,listview,Java,Android,Listview,我的问题如下: 我现在有一个包含四个元素的列表视图。对于大多数屏幕尺寸,这不会占用整个屏幕,并在下方留下丑陋的未使用空间。我想展开listview,这样每个项目的间隔都是均匀的,不留任何空白,但无法找到解决方案 下面是我看到的图片: 我放进去的红色箭头表示我希望通过均匀地间隔项目来填充下方的空白 listview非常基本,没有什么特别之处。以下是我的xml文件中的一些代码: <ListView android:layout_width="match_parent" an

我的问题如下:

我现在有一个包含四个元素的列表视图。对于大多数屏幕尺寸,这不会占用整个屏幕,并在下方留下丑陋的未使用空间。我想展开listview,这样每个项目的间隔都是均匀的,不留任何空白,但无法找到解决方案

下面是我看到的图片:

我放进去的红色箭头表示我希望通过均匀地间隔项目来填充下方的空白

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

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

这些项是从数据库中填充的。我希望有一个简单的解决方案,但一直没有找到。有人能帮我解决吗?

试试这个:

<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


“您应该将屏幕高度除以希望在屏幕上显示的项目数量。”

@马塞洛,你在评论中回答了我的问题,所以我不能接受这是正确的答案,但通过这样做,我能够解决我的问题。以下是我所做的:

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文件中的标准高度,而不需要额外的间距,在这种情况下基本上忽略了最小高度。

或者您也可以使用:

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

在您的xml文件中。

您应该将屏幕高度除以屏幕上所需的项目数量。项目数量是动态的,如果有更多的项目(项目可能会变得拥挤),这可能是一个问题。然而,如果我能为我认为的每件物品设定一个最小尺寸,这可能会起作用。我将试一试,然后带着我的结果回来。请提供列表行的XML