Android - 只有最后一项显示在图层列表中

时间:2013-01-22 10:28:17

标签: android android-listview shape divider

我正试图为divider设置ListView的样式。我想要的只是两条简单的水平线。

list.xml

<ListView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    style="@style/ListView" >
</ListView>

styles.xml

<style name="ListView" parent="android:style/Widget.ListView">
    <item name="android:divider">@drawable/divider</item>

    <!-- 5dp: just to make sure there's enough space -->
    <item name="android:dividerHeight">5dp</item>
</style>

divider.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#00ffff" />
            <size android:height="1dp" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <solid android:color="#ff0000" />
            <size android:height="1dp" />
        </shape>
    </item>
</layer-list>

结果是height of 5dp的水平线(应该是2,不是吗?)和color of red(第二项的颜色)。第一个颜色为#00ffff的项目根本没有显示。

有人可以建议 2条简单水平线的代码吗?

1 个答案:

答案 0 :(得分:11)

我最好回答我自己的问题......

似乎styles.xml - style - item采用last itemlayer-list的颜色作为整个分频器的背景。此last item位于其他图层的顶部,这就是图层列表中的其他项目未显示的原因。

关键是 padding

<强> styles.xml

<style name="ListView" parent="android:style/Widget.ListView">
    <item name="android:divider">@drawable/divider</item>
    <item name="android:dividerHeight">10dp</item>
</style>

<强> divider.xml

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

    <item>
        <shape android:shape="rectangle">
            <solid android:color="#0000ff" />
            <padding android:top="5dp"/>
        </shape>
    </item>

    <item>
        <shape android:shape="rectangle">
            <solid android:color="#ff0000" />
        </shape>
    </item>

</layer-list>

divider

所以在我的情况下,我只需要将10dp / 5dp更改为2dp / 1dp即可得到2条细水平线。