我用ListView创建了一个Android应用程序。我已经在页面中添加了页眉和页脚。但是在添加分隔符/分隔符时,它还会在标题和第一个ListView项之间创建一个空格。它对最后一个ListView项和页脚也是如此。
空白空间等于所有ListView项之间的分隔符大小,不同之处在于它不会绘制分隔符并且只留下空白空间。我以为我找到了xml属性'Footer dividers enabled'和'Header dividers enabled'的解决方案。但是当它们设置为false时,它不会改变任何东西。我甚至尝试使用
以编程方式设置它们list.setFooterDividerEnabled(false);
list.setHeaderDividerEnabled(false);
但它不起作用。有什么方法可以解决这个问题?我只是不希望空白空间存在,我希望第一项完全适合标题(页脚相同)。
答案 0 :(得分:5)
我偶然发现了同样的问题,但情况与你的情况略有不同。我的ListView
有一个标题(搜索框),但它下面的第一项包含一个标题标题(日期或字母)而不是常规列表项(实际内容采用图像形式) ,一些文字,等等)。因此,我希望它不可选,所以在我的自定义适配器中,我已覆盖areAllItemsEnabled
以返回false
。
大错,因为那正是罪魁祸首。看来,按照设计,ListView
实现only draw dividers between two enabled items似乎仍然为已启用项目和已禁用项目之间的分隔线保留空间,即使这些分隔线不会被绘制。事实上,这是一个有意识的设计决定并不意味着它不是愚蠢的。最奇怪的是,此分隔符绘制策略仅基于areAllItemsEnabled
返回的值,而不是后续项目对isEnabled
的单个调用返回的值。
因此,为了解决这个问题,我只需要从true
返回areAllItemsEnabled
(我保留了被覆盖的方法并添加了关于此问题的评论,否则我将无法记住它从现在起一个月):瞧,白色空间消失了,取而代之的是分隔线。现在,如果我想显示ListView
标题并且第一个标题标题完全相邻,我只需要选择与标题颜色相同的分隔颜色。
真的希望和你的情况一样,或者我的解决方案会以其他方式帮助你。
答案 1 :(得分:1)
我尝试了幻影浪子的solution(基于android-pulltorefresh):
查看布局(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>
膨胀观点:
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);
它在我们的项目中完美运作。我希望它有所帮助。
答案 2 :(得分:0)
在getview方法中,您可以检查项目是第一个还是最后一个,并设置自定义分隔符,其高度为0或透明色的单个像素高度。
答案 3 :(得分:0)
转到android布局中的ListView属性并搜索间距标签...一些如何在android中创建新布局时,默认创建的是间距标题间距和边框属性。检查它,如果可用,然后将其删除
答案 4 :(得分:0)
没有找到一个好的解决方案。
设置dividerHeight="0dp"
并手动创建我自己的分隔符 - 直接在布局XML中或在适配器中动态创建,如果您需要更精确的控制。
答案 5 :(得分:-3)
只做
list.setDividerHeight(0)
应该照顾它。