给 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>
当我将 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>