CardView 背景颜色在 API 21 出现红色

CardView background color appears red in API 21

我有一个 CardView,它使用可绘制的选择器根据其激活状态更改 cardBackgroundColor。这在 API 25 和 30 模拟器中工作正常,但在 API 21 模拟器中背景颜色为红色并且不会改变。我没有任何红色的自定义颜色。

卡片视图

<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginHorizontal="6dp"
android:layout_marginTop="8dp"
app:cardBackgroundColor="@drawable/list_item_note_background"
app:cardCornerRadius="4dp">

<androidx.appcompat.widget.AppCompatTextView
    android:id="@+id/note_name"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:padding="5dp"
    android:textSize="16sp" />

</androidx.cardview.widget.CardView>

可绘制

<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="?attr/colorPrimary" android:state_activated="true" />
<item android:color="?attr/colorSurface" />
</selector>

原色是#04d4f0 表面颜色为#FFFFFF

问题出在你的可绘制对象上,我希望 colorPrimary 和 colorSurface 已经存在于你的 colors.xml 文件中,在这里你通过 attrs 访问颜色,它将选择 android os 提供颜色使用下面的 drawable 希望对你有用。

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:color="@color/colorPrimary" android:state_activated="true" />
    <item android:color="@color/colorSurface" />
</selector>