Android Recycler View Ripple Effect无效

时间:2016-11-14 11:53:15

标签: android android-recyclerview rippledrawable

我使用以下xml drawable作为我的recyclerview列表项的背景。

touch_selector.xml

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_activated="true"
        android:drawable="@color/green_text_500"/>
    <!-- Default, "just hangin' out" state. The base state also
         implements the ripple effect. -->
    <item android:drawable="@drawable/touch_selector_base" />
</selector>

touch_selector_base.xml

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/light_grey">
    <item android:id="@android:id/mask" android:drawable="@color/light_grey" />
    <item android:drawable="@color/dark_grey"/>
</ripple>

在列表项中,我在 list_item_quote.xml

中使用touch_selector.xml,如下所示
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="86dp"
    android:gravity="center_vertical"
    android:orientation="horizontal"
    android:paddingLeft="16dp"
    android:paddingRight="16dp"
    android:clickable="true"
    android:focusable="true"
    android:background="@drawable/touch_selector"
    >
    // layout
</LinearLayout>

SIMILARLY 我有另一个xml drawable touch_selector_dark.xml touch_selector_base_dark.xml

在我的recycler-view-adapter中,我根据索引在这两个drawable之间交替。对于偶数索引,我使用较暗的drawable,对于奇数索引,我使用较浅的背景来产生交替效果。但问题是涟漪效应不起作用。

以下是颜色:

light_grey =#5b5b5b

dark_grey =#212121

green_text_500 =#37863a

3 个答案:

答案 0 :(得分:1)

在您的recycleview列表布局中使用此行

android:background="?android:attr/selectableItemBackground"

答案 1 :(得分:1)

我认为您的涟漪文件无效,您可以查看:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_pressed="true">
        <shape android:shape="rectangle">
            <solid android:color="@color/dark_grey"/>
        </shape>
    </item>
</selector>

您可以使用android:foreground="@drawable/touch_selector"显示涟漪效果,也可以使用android:background=""设置任何其他可绘制背景。

答案 2 :(得分:1)

尝试一下 为我工作

android:clickable="true"
android:focusable="true"
android:foreground="?attr/selectableItemBackground"