给 cardElevation="0dp" 时,CardBackgroundColor 无法工作

CardBackgroundColor cannot work while give cardElevation="0dp"

当我将 CardView 提供给 app:CardBackgroudColor="@color/black" 时,它起作用了

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <androidx.cardview.widget.CardView
        android:layout_width="42dp"
        android:layout_height="42dp"
        android:layout_gravity="center"
        android:layout_margin="2dp"
        app:cardCornerRadius="20dp"/>
    <androidx.cardview.widget.CardView
        android:layout_width="38dp"
        android:layout_height="38dp"
        android:layout_gravity="center"
        app:cardBackgroundColor="@color/black"
        app:cardCornerRadius="19dp"/>
</FrameLayout>

CardView img 1

但是,当我将 CardView 提供给 app:CardBackgroudColor="@color/black" 并且 app:cardElevation="0dp" 卡片背景色从卡片中移除时。

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <androidx.cardview.widget.CardView
        android:layout_width="42dp"
        android:layout_height="42dp"
        android:layout_gravity="center"
        android:layout_margin="2dp"
        app:cardCornerRadius="20dp"/>
    <androidx.cardview.widget.CardView
        android:layout_width="38dp"
        android:layout_height="38dp"
        android:layout_gravity="center"
        app:cardElevation="0dp"
        app:cardBackgroundColor="@color/black"
        app:cardCornerRadius="19dp"/>
</FrameLayout>

CardView img 2

这是因为高度和 z-index,默认情况下卡片视图具有 4dp 高度,这就是卡片视图位于其他视图顶部的原因,如果您有一个具有 4dp 高度的视图和另一个视图具有 6dp 高度的视图始终位于其他视图之上,当您将高度 0 设置为卡片视图时,另一个具有高度的视图位于该卡片视图之上。要解决这个问题,您有 2 个选择:
1- 使您的两个卡片视图高度都为 0dp
2- 在第一个卡片视图中包含黑色背景的第二个卡片视图 例如:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <androidx.cardview.widget.CardView
        android:layout_width="42dp"
        android:layout_height="42dp"
        android:layout_gravity="center"
        android:layout_margin="2dp"
        app:cardCornerRadius="20dp">

        <androidx.cardview.widget.CardView
            android:layout_width="38dp"
            android:layout_height="38dp"
            android:layout_gravity="center"
            app:cardElevation="0dp"
            app:cardBackgroundColor="@color/black"
            app:cardCornerRadius="19dp"/>

      <androidx.cardview.widget.CardView/>
</FrameLayout>