我正在尝试在点击卡片视图时添加涟漪效应,这很奇怪吗?
这有什么问题吗?
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:app="http://schemas.android.com/tools"
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:foreground="?android:attr/selectableItemBackground"
android:clickable="true"
android:layout_margin="5dp"
card_view:cardCornerRadius="6dp"
card_view:contentPadding="5dp"
card_view:cardElevation="4dp"
card_view:cardMaxElevation="6dp"
app:ignore="NamespaceTypo">
</androidx.cardview.widget.CardView>
//我有一个线性布局,在cardview内部有三个textview。
RecyclerView:
<LinearLayout
android:id="@+id/cardViewLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:visibility="gone">
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout
android:id="@+id/swipe_refresh_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/cardList"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
</LinearLayout>
谢谢!
答案 0 :(得分:2)
请勿在{{1}}中使用任何background/foreground
。如果使用任何背景色,则只需添加CardView
。从app:cardBackgroundColor="@color/cardBackgroundColor
中删除所有padding
。在项目之间使用CardView
作为间距。
现在,对于margin
中的波纹效果,只需在CardView
中添加直接子布局。在子布局中设置CardView
。如果需要,在子级中添加任何必要的android:background="?attr/selectableItemBackground"
。
padding/margin
答案 1 :(得分:0)
请使用 com.google.android.material.card.MaterialCardView
代替 androidx.cardview.widget.CardView
,这将提供开箱即用的功能。
背景:https://developer.android.com/jetpack/androidx/releases/cardview 是替代 https://developer.android.com/topic/libraries/support-library/packages#v7-cardview 的新基础,材料组件 https://developer.android.com/reference#other-libraries 使用根据 https://material.io/components/cards/android#card anatomy 定义的前景和涟漪颜色构建在 androidx.cardview 之上。 ..所以请检查您是否自定义了 ?attr/colorSurface
、?attr/colorOnSurface
或 app:cardForegroundColor
以设置彼此匹配的值以实现可见的更改
但是:听起来像https://github.com/material-components/material-components-android/issues/1095 ?♂️这样的新问题 而且代码文档好像有点怪怪的https://github.com/material-components/material-components-android/blob/master/lib/java/com/google/android/material/card/MaterialCardView.java#L303 ??
答案 2 :(得分:0)
现有的CardView没有波纹效果,使用MaterialCardView有波纹效果。
这里是 MaterialCardView 的示例代码
<com.google.android.material.card.MaterialCardView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="100dp"
android:layout_height="115dp"
app:cardCornerRadius="6dp"
app:cardElevation="6dp"
android:id="@+id/myCard"
android:clickable="true"
android:focusable="true">
<!-- Your child layout -->
</com.google.android.material.card.MaterialCardView>