33

我正在尝试为listview分隔线设置边距。
分隔线是一条虚线:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="line" >
    <stroke
        android:dashGap="1dp"
        android:dashWidth="1.5dp"
        android:width="1dp"
        android:color="#FF404040" />

    <size android:height="3dp" />

</shape>

listview我设置分隔符的地方

<ListView
    android:id="@+id/lv_news_feed_list"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/white"
    android:divider="@drawable/ch_dashed_line_divider"
    />

但我想要左右分隔边距。我还尝试为形状设置填充,但listview忽略了填充。

    <padding
        android:bottom="15dp"
        android:left="15dp"
        android:right="15dp"
        android:top="15dp" />

是否有可能为listview分隔线设置边距 - 除了在适配器的 getView() 中?

4

5 回答 5

87

插图是要走的路

<?xml version="1.0" encoding="UTF-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:insetLeft="15dp"
    android:insetRight="15dp" >

    <shape
        android:shape="line" >
        <stroke
            android:dashGap="1dp"
            android:dashWidth="1.5dp"
            android:width="1dp"
            android:color="#FF404040" />

            <size android:height="3dp" />

    </shape>

</inset>
于 2012-12-06T18:14:50.270 回答
17

使用'插入'......

(list_divider.xml)

<?xml version="1.0" encoding="UTF-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:insetLeft="50dp"
    android:insetRight="50dp" >

 <shape>
    <solid android:color="@color/orange" />
    <corners android:radius="2.0dip" />
</shape>

</inset>

并在您的列表视图中添加这样的...

<ListView
    android:dividerHeight="2dp"
    android:divider="@drawable/list_divider"
    ...
/>

您可以根据需要设置插入值...

于 2013-06-28T07:52:16.680 回答
5

您可以使用以下想法:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape android:shape="rectangle">
        <solid android:color="@color/table_background"/>
    </shape>
</item>
<item android:left="2dp" android:right="2dp">
    ... your shape here ...
</item> </layer-list>

这个对我有用。希望它会有所帮助。

于 2012-10-13T15:07:45.103 回答
3

你可以使用渐变来获得左右边距而不是描边。试试这个样本,它以黑色开始和结束,在中心你会得到白色。看起来你已经给了边距

 <gradient android:startColor="#000000" android:centerColor="#ffffff"
    android:endColor="#000000" />
于 2012-06-19T07:46:26.250 回答
1

我不相信这是可能的:/尽管如果您在每个列表项的底部添加自己的可绘制对象并删除 ListViews 分隔符,您可以根据需要自定义它:)

创建文件夹 res/drawable 并创建一个新的 xml:

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

    <solid android:color="#666666"></solid>

</shape>

..然后在您的列表项中使用该可绘制对象。

或者一种非常快速而肮脏的方式是在列表项的底部创建一个带有彩色背景的薄线性布局(或其他一些布局)来伪造一个可定制的 ListView 分隔线。

不是一个合适的解决方案,只是一些修复的想法;)

于 2012-06-19T07:56:08.510 回答