我创建了一个带有 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/