Android 材质 CardView 波纹效果改变内容颜色

Posted

技术标签:

【中文标题】Android 材质 CardView 波纹效果改变内容颜色【英文标题】:Android material CardView ripple effect changes content color 【发布时间】:2022-01-19 14:26:07 【问题描述】:

我最近从使用自定义卡片组件转向使用 Material Design 3 卡片。令我惊讶的是,当按下卡片时,波纹颜色会改变内容颜色。我在 material-design-components 存储库的目录项目上尝试了这个,并且卡的行为方式相同。我当前更改波纹颜色和卡片背景的代码:

<style name="Widget.App.Card.Filled" parent="Widget.Material3.CardView.Filled">
   <item name="rippleColor">#4D4D4D</item>
   <item name="cardBackgroundColor">@android:color/transparent</item>
</style>

我还有一个演示此行为的演示:https://i.imgur.com/t4WW4CY.mp4。字体颜色根据波纹效果变为浅灰色。我也在使用材质按钮,但涟漪效应不会影响内容。我正在使用版本1.5.0-rc01

有没有人知道这是否是有意的,以及我如何只能使用材料设计组件提供的属性来更改印刷机上的背景颜色。

更新:

我的卡片视图 XML(它来自 material-components github + 自定义样式):

<com.google.android.material.card.MaterialCardView
      style="@style/Widget.App.Card.Filled"
      android:id="@+id/card"
      android:layout_
      android:layout_
      android:layout_weight="0.4"
      android:layout_margin="16dp"
      android:clickable="true"
      android:focusable="true"
      app:contentPadding="@dimen/cat_card_content_padding">

    <TextView
        android:layout_
        android:layout_
        android:layout_gravity="center"
        android:text="@string/cat_card_states_card_content"
        android:textAppearance="?attr/textAppearanceBody1"/>
  </com.google.android.material.card.MaterialCardView>

【问题讨论】:

你能分享你的卡片视图xml代码吗? @DrHowdyDoo 我更新了我的帖子。 【参考方案1】:

我认为这是因为波纹颜色应用于前景而不是背景。所以是的,这是有意为之,我认为您无法更改。

看看源代码:MaterialCardViewHelper.java

注意:这不会发生在按钮中,因为按钮将波纹应用于背景而不是前景。

按钮源代码:MaterialButtonHelper.java

【讨论】:

以上是关于Android 材质 CardView 波纹效果改变内容颜色的主要内容,如果未能解决你的问题,请参考以下文章

具有背景颜色的按钮的材质效果

带有伪元素的 CSS 波纹效果导致回流

markdown CardView高程和波纹

android: Android水波纹点击效果

Android学习笔记---水波纹效果

Android 自定义view实现水波纹效果