如何使ListView的页脚填充剩余空间?

9
我有一个ListView,其中可以包含任意数量的项。当它使用不到整个屏幕高度时,我想显示一个填充剩余空间的页脚。
页脚只是一个平铺图像。我不能将其设置为ListView或其容器的背景,因为列表项部分透明,必须是主要背景而不是页脚可见。
如果页脚的高度固定,则添加页脚视图效果良好,但如果固定高度大于剩余高度,则ListView会不必要地滚动。
将页脚视图设置为fill_parent似乎没有效果,它只是不可见的。
将页脚视图放入父布局中也没有效果,因为除非给定固定的layout_height值,否则ListView似乎会填充整个高度。
这可能吗?

对于所有回答的人,我向你们道歉,我忽略了ListView位于ListFragment内部,这似乎是导致父布局解决方案无法工作的原因。我将其更改为普通片段,并明确设置了ListView,现在使用weight可以正常工作。感谢你们的努力! - Ouchdroid
嗨,我对你的解决方案很好奇。你把权重放在哪个布局中?ListView还是ListItemView? - akhy
3个回答

1

ListView 占据整个父元素,即使另一个元素的权重为 1。我无法将页脚合并到 ListView 中(AdapterView 不支持 addView),将其合并到父元素中似乎与直接放入父元素中具有相同的效果(使用 fill_parent 填充整个空间,否则不显示)。 - Ouchdroid
你是通过动态创建ListView,还是从布局文件中填充它的? - Noah
嗯...有点棘手...我稍后会看一下,除非有人先解决了。你试过在可扩展的布局上创建一个空的listView,然后按需调整视图的比例吗?然后你可以动态地填充listView中的元素,但对基本布局有更好的控制。这可能取决于你要做什么,可能不太可能实现。 - Noah
除非有更优雅的方法,否则我的下一步是测量列表视图的使用高度,并将页脚(移动到父级)的高度设置为剩余部分。我看不出为什么这不会起作用,但肯定不够美观。 - Ouchdroid
你需要跟踪给定的屏幕尺寸,因为每个设备的尺寸都不同,但我敢打赌这会起作用。这实际上可能是最优雅的解决方案 - Android视图被设计成以防止直接与屏幕尺寸交互,并使应用程序更普遍地可访问。 - Noah
多年后修正;我真的很在意。 - Noah

1
将ListView放置在另一个布局中,并将其设置为填充整个屏幕。
LinearLayout最适合此操作。
类似于这样:
<LinearLayout android:layout_height="match_parent" 
            android:layout_width="match_parent" >
    <ListView android:layout_height="match_parent" 
              android:layout_width="match_parent" >
        ...
    </ListView>
</LinearLayout>

这将填充LinearLayout到屏幕底部。您可以使用此行为来控制视图的外观。

希望这有所帮助!


将一个可以滚动的视图放在另一个可以滚动的视图中,即在 ScrollView 中放置 ListView 不是一个好主意。 - Squonk
我已经尝试过这个方法。如果我不给ListView一个固定的高度,即使使用weight属性,它也会占据所有可用的空间(这是有道理的,因此我正在尝试让页脚方法起作用)。 - Ouchdroid

0

试试这个,告诉我是否有效:

  • 将两个放在一个父布局中(例如:线性布局)
  • 对于 ListView:android:layout_hight="wrap_content"
  • 对于页脚:android:layout_hight="fill_parent"

ListView似乎总是使用fill_parent,如果没有指定固定高度,wrap_content没有效果(这很合理,因此我正在尝试使页脚方法起作用)。 - Ouchdroid

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接