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

use*_*156 4 android shape divider android-listview

我试图在风格dividerListView.我想要的只是2条简单的水平线.

list.xml

<ListView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    style="@style/ListView" >
</ListView>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

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

有人可以建议2个简单的水平线的代码

use*_*156 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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)

分频器

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