列表视图标题和第一项之间的空白空间

我创build了一个ListView的Android应用程序。 我已经添加了页眉和页脚到列表中。 但是,当添加分隔符/分隔符时,它还会在标题和第一个ListView项目之间创build一个空白空间。 它对上一个ListView项目和页脚也是一样的。

空白空间相当于所有ListView项目之间的分隔符的大小,不同之处在于它不绘制分隔符,只留下空白空间。 我以为我find了解决scheme的xml属性“页脚分隔符启用”和“标题分隔符启用”。 但是当它们设置为false时,它不会改变任何东西。 我什至尝试用编程方式设置它们

list.setFooterDividerEnabled(false); list.setHeaderDividerEnabled(false); 

但它不起作用。 有什么办法解决这个问题? 我只是不想空的空间在那里,我想要的第一个项目正好适合标题(相同的页脚)。

我偶然发现了同样的问题,但情况与您的情况稍有不同。 我的ListView有一个标题(一个search框),但它下面的第一个项目包含一个节标题(一个date或一个字母),而不是一个常规的列表项(与图像的forms,一些文本的实际内容,等等)。 因此,我希望它不是可选的,所以在我的自定义适配器,我已经重写了areAllItemsEnabled返回false

大错,因为那正是罪魁祸首。 看来,在devise上, ListView实现似乎只在两个启用的项目之间绘制分隔符 ,但是仍然为启用的项目和禁用的项目之间的分隔物保留空间,即使这些分隔符将不被绘制。 事实上这是一个有意识的devise决定,并不意味着它当然不是愚蠢的。 最奇怪的是,这个分隔areAllItemsEnabled绘制策略是基于由areAllItemsEnabled返回的值,而不是通过对后续项目的单个调用isEnabled返回的值。

因此,要解决它,我只需要从areAllItemsEnabled返回true (我保留重写的方法,并添加一个关于这个问题的评论,否则我将无法记得从现在起的一个月):lo and behold,white space消失了,取而代之的是一个分隔线。 现在,如果我想显示ListView标题和第一个部分标题是完全相邻的,我只需要select一个与部分标题颜色相同的分隔符颜色。

真的希望和你一样,或者我的解决scheme以其他方式帮助你。

我试过这个人的解决scheme ,它的工作原理(代码基于pulltorefresh ):

xml布局(header.xml):

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" > <RelativeLayout android:id="@+id/content" android:layout_width="fill_parent" android:layout_height="wrap_content" > <ProgressBar style="@android:style/Widget.ProgressBar.Small.Inverse" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_margin="16dp" android:layout_marginTop="2dp" /> </RelativeLayout> </LinearLayout> 

当创build视图时:

 m_headerView = inflater.inflate(R.layout.header, this, false); 

如果你想展示它,请执行以下操作:

 m_headerView.setPadding(0, 0, 0, 0); m_headerView.setVisibility(View.VISIBLE); 

如果你想隐藏它,请这样做:

 m_headerView.setPadding(0, -1000, 0, 0); m_headerView.setVisibility(View.GONE); 

它在我们的项目中完美的工作,它有帮助。

在getview方法中,您可以检查项目是第一个还是最后一个,并设置自定义分辨率为0或高度为透明色的单个像素高度。

转到Android布局的ListView属性和search间距标记…一些如何在Android中创build新的布局时,它将默认创build间距标题间距和边框属性。 检查它,如果它可用,然后删除它

没有find一个很好的解决scheme。

设置dividerHeight="0dp"并手动创build我自己的分隔线 – 无论是直接在布局XML或dynamic在适配器,如果你需要更精确的控制。

做就是了

list.setDividerHeight(0)

这应该照顾它。