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:填充屏幕剩余空间的页眉/页脚的主要内容,如果未能解决你的问题,请参考以下文章