两种方法都应该以相同的方式工作。
1) 如果您希望 cardview 响应触摸反馈,请在cardview中使用这个。
android:foreground="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
但如果上述方法不起作用,那么您可以在cardview的子视图组(线性/相对等)上设置此属性。
android:background="?android:attr/selectableItemBackground"
android:clickable="true"
android:focusable="true"
但是随后itemView
的 ViewHolder 将不会响应触摸事件。由于它已被子视图使用,因此您必须在子视图上设置 clicklistener以进一步使用 recyclerview 适配器中的侦听器,这样我们可以在适配器中的 recyclerview 行项目上启用触摸和单击事件。
如果您很难触摸并单击带有波纹的卡片视图中的视图,那么这可能会有所帮助。触摸反馈问题
2.)第二种方法是使用自定义触摸选择器绘制并设置为背景的传统方式。
<?xml version="1.0" encoding="utf-8"?>
<ripple
xmlns:android="http://schemas.android.com/apk/res/android"
android:color="your ripple color">
<item>
<selector>
<item android:state_selected="true">
<color android:color="your selected color" />
</item>
<item android:state_activated="true">
<color android:color="your selected color" />
</item>
<item>
<color android:color="your normal color" />
</item>
</selector>
</item>
</ripple>
Docs Ripple Drawable