Listview项目波纹显示在单元格隐藏内容

时间:2015-04-13 06:21:59

标签: android listview android-listview ripple

当用户点击列表视图中的单元格时,我试图显示对Lollipop设备的连锁反应。基于Listview selector with colored background and ripple effect的帖子,我做了与android:drawSelectorOnTop="true"建议的相同的操作,但是在显示波纹后,在单元格上显示背景颜色,从而完全隐藏了单元格的内容。

那么想知道是否有任何正确的方法来实现列表视图中各个项目的连锁效应?

1 个答案:

答案 0 :(得分:0)

您是否为ListView中的项目指定了自定义背景?如果是这样,那么你需要为你的背景创建两个drawable,一个在“drawable”文件夹中,另一个在“drawable-v21”文件夹中。

例如,如果drawable的文件名是“list_item_bg.xml”,那么

/drawable-v21/list_item_bg.xml将是:

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="?attr/colorControlHighlight">
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android">
            <corners android:radius="4dp" />
            <solid android:color="@color/accent" />
        </shape>
    </item>
</ripple>

和/drawable/list_item_bg.xml类似于:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@color/dark_accent" android:state_pressed="true"/>
    <item android:drawable="@color/accent" android:state_focused="true"/>
    <item>
        <shape xmlns:android="http://schemas.android.com/apk/res/android">
            <corners android:radius="4dp" />
            <solid android:color="@color/accent" />
        </shape>
    </item>
</selector>

希望这有帮助。