Android ListView:填充屏幕剩余空间的页眉/页脚

Posted

技术标签:

【中文标题】Android ListView:填充屏幕剩余空间的页眉/页脚【英文标题】:Android ListView: Header/Footer that fills the remaining space on screen 【发布时间】:2011-08-13 03:16:23 【问题描述】:

我想使用 ListView 制作一个类似聊天的视图,其中新消息出现在屏幕底部(因此我使用 android:stackFromBottom="true")并且我想向 ListView 添加一个标题,它将出现在屏幕顶部。当消息少时,消息头和消息之间会有一个空白区域,当消息很多时,ListView 会滚动并隐藏表头,当底部消息可见时(表头会随着滚动其余的消息)。 问题是我不能告诉 ListView 让它的标题或项目填充屏幕上的剩余空间。 android:layout_ 没有帮助。我可以使用RelativeLayout 将标题设为静态,但我不想这样做。有什么想法吗?

【问题讨论】:

【参考方案1】:

为什么不把列表视图放在一个有 3 行的表格布局中。将listview放在中间行,然后将顶行和底行作为页眉和页脚。

【讨论】:

Marcos 所说的会起作用,但我更喜欢表格布局。您可以将页眉和页脚设置为固定高度(倾角),并允许列表视图根据所使用的设备缩小/增长高度。 与马科斯的回答相同。当空白空间被填满时,我真的需要这个 Header 与 ListView 一起滚动。我在 iPhone 上看到过,但在 Android 上还没有,所以我不知道是否可行。【参考方案2】:

垂直使用 LinearLayout,标题在顶部,ListView 在中间,layout_weight="1",然后是页脚。

如果您希望 Header 可滚动,一种解决方案。 是将适配器中的位置 1 膨胀为要滚动的标题。

【讨论】:

但是当我滚动 ListView 时,标题将保持可见。正如我所说的情况有点问题 - 我想要顶部的标题,当没有足够的消息时(并且消息在底部),但是当空间充满消息并且 ListView 变得可滚动时,我想要与 ListView 一起滚动的标题。 嗯.. 有点复杂。检查我的新答案。 感谢您一直回复我!我仍然不知道如何将标题放在屏幕顶部(将其与屏幕顶部对齐)并在没有足够内容填充 ListView 时将其余项目放在底部。在代码中进行一些核心计算是可能的解决方案,但我正在寻找一种更智能的方法。【参考方案3】:

只需制作不同的布局,例如 header_list.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_ android:layout_
    android:background="@drawable/listitem_background"
    android:layout_marginLeft="4dip" android:layout_marginRight="4dip"
    android:gravity="center_vertical|center_horizontal"
>

        <TextView android:id="@+id/nearByLabel" 
            android:layout_
            android:layout_ 
            android:text="Load More Results" 
            android:textColor="#000"
            android:textStyle="bold"
            android:textSize="20sp"
            />

</LinearLayout>

并在你的活动中添加它

View headerView = inflater.inflate(R.layout.header_list, null);
yourlistView.addHeaderView(headerView);

【讨论】:

感谢您的回答,但这不是问题所在。我现在解决的方法是将标题放在屏幕顶部,当第一个列表项不再可见时,用动画隐藏它。

以上是关于Android ListView:填充屏幕剩余空间的页眉/页脚的主要内容,如果未能解决你的问题,请参考以下文章

为啥视图不扩展以填充剩余空间

让一个 div 填充剩余屏幕空间的高度

使一个 div 填充剩余屏幕空间的高度

使一个 div 填充剩余屏幕空间的高度

让一个 div 填充剩余屏幕空间的高度

使一个 div 填充剩余屏幕空间的高度