在RecyclerView中使用具有另一种背景颜色的项来获得涟漪效果

4

我需要在我的RecyclerView元素中添加一个简单的涟漪效果,这些元素已经设置了背景颜色(蓝色)。由于它们已经设置好了背景颜色,我不能将背景设置为drawable/ripple.xml:

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/color_view_pressed"> <!-- ripple color -->

<item android:drawable="@android:color/white"/>
<!-- normal color -->

所以我将我的ripple.xml更改为:

<ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/color_view_pressed"> <!-- ripple color -->

<item android:drawable="@android:color/blue"/>
<!-- normal color -->

仍然不能正常工作。 :( 编辑: 显然,涟漪颜色被隐藏在背景颜色后面,所以几乎看不到。但是如果我将color_view_pressed设置为深红色,则可以在背景中看到一点。是否有其他方法可以实现这一点?我已经尝试了所有可能的解决方案。 不知何故,它与ListView完美地配合使用。虽然我不明白为什么。

2个回答

5
在用于项的布局的根ViewGroup中,添加前景属性而不是已经设置的背景:
android:foreground="?android:attr/selectableItemBackground"

并设置这些属性:

android:clickable="true"
android:focusable="true"

这对我有用。

@Sid 使用此功能时,请删除ripple.xml 中的尝试,它不再必要。 - fillobotto
是的,我已经删除了我的ripple.xml尝试。 - Sid
@Sid,请查看更新的帖子,这正是我让它工作的方式。希望你能解决。 - fillobotto
但是为了确保,当你说ViewGroup时,你是指附加到RecyclerView适配器的xml中的布局,对吗? - Sid
好的,我会尝试设置属性并查看。 - Sid
显示剩余3条评论

1
你可以有两个 ViewGroup,其中一个有涟漪效果的背景,另一个是它的子元素,拥有整个布局和蓝色背景。

这个也不行。虽然背景颜色被获取了,但是涟漪效果完全看不到。:( - Sid

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