我试图在listView上使用marginBottom来使listView项目之间的空间,但项目仍然附加在一起。

这可能吗?如果有,有具体的方法吗?

我的代码如下

<LinearLayout
android:id="@+id/alarm_occurences"
android:layout_width="fill_parent" 
android:orientation="vertical"
android:layout_height="fill_parent"
android:background="#EEEEFF"
xmlns:android="http://schemas.android.com/apk/res/android">

<ListView
android:id="@+id/occurences"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
</LinearLayout>

我的自定义列表项:

<com.android.alarm.listItems.AlarmListItem
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent" 
android:background="@drawable/alarm_item_background"
android:layout_marginBottom="10dp"    
>
<CheckedTextView     
    android:id="@android:id/text1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:checkMark="?android:attr/listChoiceIndicatorMultiple"
    android:textSize="20sp"
    android:textStyle="bold"
    android:typeface="serif"
    android:padding="10dp"

/>

</com.android.alarm.listItems.AlarmListItem>

在这种情况下,我如何使列表项之间的间距?


当前回答

为了在listView内部的视图之间提供间距,请在膨胀视图上使用填充。

你可以使用android:paddingBottom="(number)dp" && android:paddingTop="(number)dp"对你的视图或视图,你在你的列表视图内膨胀。

分割线只是一个解决方案,因为有一天,当你想使用分割线的颜色时(现在它是透明的),你会看到分割线被拉伸了。

其他回答

为了在listView内部的视图之间提供间距,请在膨胀视图上使用填充。

你可以使用android:paddingBottom="(number)dp" && android:paddingTop="(number)dp"对你的视图或视图,你在你的列表视图内膨胀。

分割线只是一个解决方案,因为有一天,当你想使用分割线的颜色时(现在它是透明的),你会看到分割线被拉伸了。

我的解决方案是增加更多的空间,但保持水平线,在res/drawable文件夹中添加separator .xml,并在其中定义线的形状:

divider.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="line" >

    <stroke
        android:width="1px"
        android:color="@color/nice_blue" />

</shape>

然后在我的列表中引用我的分隔符如下:

<ListView
    android:id="@+id/listViewScheduledReminders"
    android:layout_width="match_parent"
    android:layout_height="0dip"
    android:layout_marginBottom="@dimen/mediumMargin"
    android:layout_weight="1"
    android:divider="@drawable/divider"
    android:dividerHeight="16.0dp"
    android:padding="@dimen/smallMargin" >

</ListView>

注意android:dividerHeight="16.0dp"通过增加和减少这个高度,我基本上是在分隔线的顶部和底部添加了更多的填充。

我使用这个页面作为参考:http://developer.android.com/guide/topics/resources/drawable-resource.html#stroke-element

你应该给出padding而不是margin:

<ListView
    android:id="@+id/listView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:divider="@android:color/green"
    android:dividerHeight="4dp"
    android:layout_alignParentTop="true"
    android:padding="5dp" >

</ListView>

OR

<ListView
    android:id="@+id/listView1"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:layout_alignParentTop="true"
    android:paddingTop="2dp"
    android:divider="@android:color/green"
    android:dividerHeight="4dp"
    android:paddingLeft="1dp"
    android:paddingRight="1dp"
    android:paddingBottom="2dp"
    android:paddingStart="0dp"
    android:paddingEnd="0dp" >

</ListView>

我意识到答案已经被选择了,但我只是想分享当我遇到这个问题时,最终对我有用的方法。

我有一个listView,其中listView中的每个条目都由其自己的布局定义,类似于Sammy在他的问题中发布的内容。我尝试了建议的改变分隔线高度的方法,但最终看起来并不太漂亮,即使使用了一个隐形的分隔线。经过一些实验后,我简单地添加了一个android:paddingBottom="5dip"到XML文件中定义单个listView条目的最后一个TextView布局元素。

这最终给了我什么,我试图通过使用android实现:layout_marginBottom。我发现这个解决方案产生了一个更美观的结果,而不是试图增加分隔高度。

很多解决方案都是有效的。然而,如果你想要的是能够设置项目之间的空白,我想出的最简单的方法是包装你的项目-在你的情况下CheckedTextView -在一个线性布局,并把你的空白格式为项目,而不是根布局。一定要给这个包装布局一个id,并在适配器中创建CheckedTextView。

就是这样。实际上,您是在ListView的项级别上实例化页边距。因为ListView不知道任何项的布局——只有你的适配器知道。这基本上扩大了之前被忽略的项目布局部分。