CardView cardElevation 在 CardView 内部绘制随机方块

CardView cardElevation draws random square inside of CardView

一个简单的问题,我使用 CardView 为 Button 添加高度,但是在分配 cardElevation 时,CardView 在其内部绘制了一个框,我尝试切换海拔和其他属性,我可以通过增加 cardElevation 来最小化它的影响,但这不是解决方案。

这是 XML 中的 CardView

  <androidx.cardview.widget.CardView
            android:layout_width="38sp"
            android:layout_height="38sp"
            app:cardElevation="5sp"
            android:layout_gravity="end"
            android:layout_marginTop="60sp"
            android:layout_marginRight="12sp"
            android:layout_marginEnd="12sp"
            app:cardBackgroundColor="#97FFFFFF"></androidx.cardview.widget.CardView>

应用中的CardView。 (右上角方框)

整个XML文件,最后一个CardView是图片上的。

<?xml version="1.0" encoding="utf-8"?>
<com.flipboard.bottomsheet.BottomSheetLayout
    android:id="@+id/bottomsheet"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/map"
    android:name="com.google.android.gms.maps.SupportMapFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".ui.map.MapFragment">

    <LinearLayout
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:orientation="vertical">

    <androidx.cardview.widget.CardView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:cardElevation="20dp"
        android:layout_gravity="end"
        android:layout_marginTop="60dp"
        android:layout_marginRight="12dp"
        android:layout_marginEnd="12dp"
        app:cardBackgroundColor="#97FFFFFF">

      <ImageButton
          android:layout_width="38dp"
          android:layout_height="38dp"
          android:padding="1dp"
          android:src="@drawable/ic_baseline_refresh_24"
          android:background="#00FFFFFF"
          android:elevation="10dp"
          android:id="@+id/btn_reset_map"/>
    </androidx.cardview.widget.CardView>
        
        <androidx.cardview.widget.CardView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:cardElevation="20dp"
            android:layout_gravity="end"
            android:layout_marginTop="10dp"
            android:layout_marginRight="12dp"
            android:layout_marginEnd="12dp"
            app:cardBackgroundColor="#97FFFFFF">

            <ImageButton
                android:layout_width="38dp"
                android:layout_height="38dp"
                android:padding="1dp"
                android:src="@drawable/ic_baseline_layers_24"
                android:background="#00FFFFFF"
                android:elevation="10dp"
                android:id="@+id/btn_layer_map"/>
        </androidx.cardview.widget.CardView>

        <androidx.cardview.widget.CardView
            android:layout_width="38dp"
            android:layout_height="38dp"
            app:cardElevation="5dp"
            android:layout_gravity="end"
            android:layout_marginTop="40dp"
            android:layout_marginRight="12dp"
            android:layout_marginEnd="12dp"
            app:cardBackgroundColor="#97FFFFFF"></androidx.cardview.widget.CardView>

    </LinearLayout>
</fragment>

</com.flipboard.bottomsheet.BottomSheetLayout>

您可以通过编程方式将 CardView 背景颜色设置为与使用 app:cardBackgroundColor

设置的颜色相同的颜色
CardView cardview = findViewById(R.id.cardview);
cardview.setBackgroundColor(ContextCompat.getColor(this, R.color.cardview_color));

并在 colors.xml

中创建此颜色
<color name="cardview_color">#97FFFFFF</color>

并将此 ID 添加到 xml:

  <androidx.cardview.widget.CardView
      android:id="@+id/cardview"
      ....

注意:由于某些原因 android:background="#97FFFFFF" 不起作用

设置 android:outlineProvider="none" 解决了我的问题