android - ListView 标题和第一项之间的空白

标签 android header android-listview footer divider

我创建了一个带有 ListView 的 android 应用程序。我在列表中添加了页眉和页脚。但是在添加分隔符/分隔符时,它还会在标题和第一个 ListView 项之间创建一个空白空间。最后一个 ListView 项和页脚也是如此。

空白空间相当于所有ListView项之间的分隔线的大小,不同的是它不绘制分隔线,只留下空白空间。我以为我找到了带有 xml 属性“已启用页脚分隔符”和“已启用页眉分隔符”的解决方案。但是当它们设置为 false 时,它​​不会改变任何东西。我什至尝试使用

以编程方式设置它们
list.setFooterDividerEnabled(false);
list.setHeaderDividerEnabled(false);

但这只是行不通。有什么办法可以解决这个问题?我只是不希望有空白空间,我希望第一项完全适合页眉(页脚也是如此)。

最佳答案

我偶然发现了同样的问题,但情况与您的情况略有不同。我的 ListView 有一个标题(一个搜索框),但它下面的第一个项目包含一个部分标题(日期或字母)而不是常规列表项(实际内容以形式图像、一些文本等)。因此,我不希望它是可选择的,所以在我的自定义适配器中,我重写了 areAllItemsEnabled 以返回 false

大错特错,因为这正是罪魁祸首。看,从设计上看,ListView 实现 only draw dividers between two enabled items ,但仍为启用项和禁用项之间的分隔线保留空间,即使这些分隔线不会被绘制。当然,这是一个有意识的设计决定并不意味着它不愚蠢。最奇怪的是,此分隔线绘制策略仅基于 areAllItemsEnabled 返回的值,而不是对后续项目的单个调用 isEnabled 返回的值。

因此,为了解决这个问题,我只需要从 areAllItemsEnabled 返回 true (我保留了被覆盖的方法并添加了关于这个问题的评论,否则我不会一个月后能记住它):你瞧,空白消失了,取而代之的是一个分隔线。现在,如果我想将 ListView 标题和第一个部分标题显示为完全相邻,我只需要选择一个与部分标题颜色相同的分隔线颜色。

真的希望这和你的情况一样,或者我的解决方案能以其他方式帮助你。

关于android - ListView 标题和第一项之间的空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10119132/

相关文章:

android - 在没有adjustPan的键盘出现时推送Listview

java代码在fragment Activity中不起作用

android - DBAdapter设计问题

android - 查询特定Parse用户的信息?

html - 如何从边框到边框填充整个日历标题?

Python urllib2 响应头

c++ - 如何使用Winsock 2?

android - 如何将 Listview 的内容发送到另一个 Activity?

单击时android更改按钮图标