Android ListView:每个屏幕尺寸的固定行数

Android ListView: Fixed number of rows for EVERY screen size

我必须在片段内创建一个列表视图,无论屏幕大小如何,它都应该始终显示前 3 个项目(其余部分应该是可滚动的)。这 3 个项目应该填满整个可用 space,这意味着项目高度必须动态调整。你也可以说:前三项应该分别占列表视图的 33%。

有没有办法使用 LinearLayout 和布局权重实现此目的?如果没有,以编程方式进行此操作的最佳方法是什么,例如通过确定当前片段大小或类似的东西?

尝试在列表适配器的膨胀布局上使用 view.setMinimumHeight(int) 并为其提供所需的高度。

关于获取屏幕大小可以查看this SO post

编辑:将该方法应用于定义每个项目的布局。您需要一个自定义适配器并在您的 getView 方法中完成这项工作

您可以通过确定屏幕大小并在创建列表项并将其添加到列表时调整列表项的高度来即时计算大小。 This question and this one 可能有助于阐明权重的使用,并会清理您的代码。

我设法使用 OnGlobalLayoutListener 获得了高度和宽度。

毕竟,我们认为这在布局方面不是一个好主意,但我认为有人可能会觉得这很有趣 ;)