我使用以下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
答案 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"