Listview分频器保证金

时间:2012-06-19 07:28:36

标签: android android-listview divider

我正在尝试为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()外?

5 个答案:

答案 0 :(得分:84)

插图是要走的路

<?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>

答案 1 :(得分:16)

使用&#39;插入&#39; .....

(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"
    ...
/>

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

答案 2 :(得分: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>

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

答案 3 :(得分:3)

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

 <gradient android:startColor="#000000" android:centerColor="#ffffff"
    android:endColor="#000000" />

答案 4 :(得分:1)

我认为不可能:/虽然如果您在每个列表项的底部添加自己的drawable并删除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>

..然后在列表项中使用该drawable。

或者是一种非常快速和肮脏的方法,可以在列表项的底部创建一个带有彩色背景的精简LinearLayout(或其他一些布局)来伪造可自定义的ListView分隔符。

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