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

4

我正在尝试样式化 ListViewdivider。我想要的只是两条简单的水平线。

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>

结果是一条水平线,高度为5dp(应该是2dp,是吗?),颜色为红色(第二个项目的颜色)。带有颜色#00ffff的第一个项目根本没有显示出来。
请问有人能提供 两条简单的水平线的代码 吗?
1个回答

11

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

看起来 styles.xml - style - item 会将 layer-list 中的 最后一个 item 的颜色作为整个分割线的背景。这个 最后一个 item其他图层之上,因此,layer-list 中的其他项不会显示出来。

关键在于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>

分隔线

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


这是一个很好的答案!只使用了最后一个项目的背景。在我的情况下,我将最后一个图层列表项设置为仅为描边,因此没有形状和颜色,这导致有一个全黑的背景!(在Android 4.4中它可以工作,但在2.2中不行,其他API未经测试)。 - Stephane Mathis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接