新的MaterialCardView
没有水波纹效果吗?
我曾经使用过带有android:clickable="true"
和android:foreground="?android:attr/selectableItemBackground"
属性的CardView
,这个功能很好用,但是在新的MaterialCardView
上没有任何水波纹效果。
其他的View
都能够正常工作,但是我想要我的卡片可以被点击(并显示水波纹效果)。
新的MaterialCardView
没有水波纹效果吗?
我曾经使用过带有android:clickable="true"
和android:foreground="?android:attr/selectableItemBackground"
属性的CardView
,这个功能很好用,但是在新的MaterialCardView
上没有任何水波纹效果。
其他的View
都能够正常工作,但是我想要我的卡片可以被点击(并显示水波纹效果)。
这是一个关于MaterialCardView
的 bug。它在创建后覆盖了前景。我已经提交了一个 bug。应该修复这个问题,以便在卡片可点击的情况下无需设置前景即可显示涟漪效果。
如果您不能等待修复,可以使用来自支持库的 CardView
,或更改代码以在 CardView 被膨胀后设置前景 drawable,或者我们将非常乐意接受您的拉取请求!相关代码:https://github.com/material-components/material-components-android/blob/master/lib/java/com/google/android/material/card/MaterialCardView.java。它可能会使用https://github.com/material-components/material-components-android/blob/master/lib/java/com/google/android/material/ripple/RippleUtils.java和 SDK >= 21 的 RippleDrawable。
在我的情况下,只需在XML
文件中添加android:clickable="true"
、android:focusable="true"
和app:rippleColor="#cfd8dc"
就可以使其正常工作。
<com.google.android.material.card.MaterialCardView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:clickable="true"
android:focusable="true"
app:rippleColor="#cfd8dc">
水波纹效果现在可以工作了,但只有在CardView上添加OnClickListener时才能生效
MaterialCardView
波纹效果生效,所以把波纹效果设置到它的内容即constraintlayout
上。 - M.kazem Akhgary