2012-04-12 44 views
34

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

空白空间相当于所有ListView项目之间的分隔符大小,不同之处在于它不绘制分隔符并仅留下空白空间。我以为我找到了xml属性的'Footer divider enabled'和'Header divider enabled'的解决方案。但是将它们设置为false时,它不会改变任何内容。我甚至试图以编程方式将它们设置为

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

但它只是不起作用。任何方式来解决这个问题?我只是不想空的空间在那里,我想第一个项目正好符合标题(页脚相同)。

+0

你可以发布一些布局XML或代码? – 2012-07-26 22:10:13

+0

你有什么解决方案吗? – 2012-09-05 18:22:44

+1

以下会帮助你吗? http://stackoverflow.com/questions/4961999/remove-bottom-divider-of-a-android-listview – Xebozone 2014-11-17 18:54:26

回答

-3

只是做

list.setDividerHeight(0)

这应该照顾它。

+0

这不是答案。这样做意味着所有的分隔线都消失了,这不是我想要的。 – Niles11 2012-09-26 21:48:11

1

我想这家伙的solution和它的作品(代码是基于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> 

当创建视图:

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); 

它完全在我们的project.hope很有帮助。

+0

您的解决方案隐藏了整个标题,但这不是OP所要求的。 – 2013-07-10 08:46:36

+0

是的,确实如此。我不明白这个问题。我遇到的是,即使隐藏了头像(设置为消失),头像仍然占据一片空白,我在网上找到了一个解决方案。也许这不是问题所在,但我认为它对其他一些家伙仍然有用:) – lucian 2013-07-25 02:12:02

5

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

大错,因为那正是罪魁祸首。看,看起来,在设计上,ListView执行only draw dividers between two enabled items,但仍然保留一个启用项目和禁用之间的分隔的空间,即使这些分隔将不会被绘制。这是一个有意识的设计决定并不意味着它不是愚蠢的,当然。最奇怪的是,此分隔线图制定政策仅基于由areAllItemsEnabled返回的值而不是通过对后续项目的单个调用isEnabled返回的值。因此,要解决它,我只需要返回trueareAllItemsEnabled(我保留重写的方法,并添加一个关于这个问题的评论,否则我将不能记得它从一个月后):lo和看哪,白色空间消失了,被一个分隔物取代。现在,如果我想要将ListView标题和第一节标题显示为完全相邻,则必须选择与节标题颜色相同的分隔线颜色。

真的很希望您的情况与您的情况相同,或者我的解决方案以其他方式帮助您。

0

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

0

转到android系统布局ListView控件的属性和搜索间距标签......一些如何在Android中,创建新布局时,会默认创建的间距头间距和边框属性。检查它,如果它是可用的,然后删除它

0

没有找到一个很好的解决方案。

dividerHeight="0dp"并手动创建了自己的分配器 - 无论是直接在布局XML或动态的适配器,如果您需要更精确的控制。

相关问题