首页 > 解决方案 > 具有高程问题的透明 CardView

问题描述

当我想要一个具有一定高度的透明 CardView 时,结果将如下所示:

在此处输入图像描述

<androidx.cardview.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#B3FFFFFF"

    app:cardElevation="8dp"
    app:cardBackgroundColor="#B3FFFFFF"
    app:cardCornerRadius="25dp"
    app:cardUseCompatPadding="true">

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

        <EditText
            android:id="@+id/folder_title"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal|top"
            android:background="@color/transparent"
            android:gravity="center"
            android:hint="@string/default_folder_name"
            android:importantForAutofill="no"
            android:inputType="text"
            android:padding="10dp"
            android:textAllCaps="false"
            android:textColor="@color/folder_title"
            android:textColorHint="@color/folder_title_hint"
            android:textSize="15sp"
            android:textStyle="bold" />


        <!--this is only for the cardView to give it more space to display the issue-->
        <View
            android:layout_width="150dp"
            android:layout_height="60dp"/>
    </LinearLayout>
</androidx.cardview.widget.CardView>

issue就是里面有色差CardView,应该是这样的:在此处输入图像描述

当我替换app:cardCornerRadius="25dp"->app:cardCornerRadius="0dp"时,不需要的色差的大小增加了。

这是issue海拔的工作方式吗?有没有解决方法?

提前致谢,

标签: javaandroidandroid-layout

解决方案


有了CardView它是不可能的。

在这种情况下,解决方法是删除CardView并将 a 设置android:background="@drawable/shadowfile"LinearLayout.

该文件包含[transparency, elevation, radius].
res/drawable/shadowfile.xml

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- every item add a layer of evaluation to the border, with the padding you define how the evaluation is located around the border-->
    <item>
        <shape>
            <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" />
            <solid android:color="#03000000" />
            <corners android:radius="20dp" />
        </shape>
    </item>    <item>
    <shape>
        <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" />
        <solid android:color="#03000000" />
        <corners android:radius="20dp" />
    </shape>
    </item>    <item>
        <shape>
            <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" />
            <solid android:color="#03000000" />
            <corners android:radius="20dp" />
        </shape>
    </item>
    <item>
        <shape>
            <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" />
            <solid android:color="#03000000" />
            <corners android:radius="20dp" />
        </shape>
    </item>
    <item>
        <shape>
            <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" />
            <solid android:color="#03000000" />
            <corners android:radius="20dp" />
        </shape>
    </item>
    <item>
        <shape>
            <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" />
            <solid android:color="#03000000" />
            <corners android:radius="20dp" />
        </shape>
    </item>
    <item>
        <shape>
            <padding android:top="1dp" android:right="1dp" android:bottom="1dp" android:left="1dp" />
            <solid android:color="#03000000" />
            <corners android:radius="20dp" />
        </shape>
    </item>

    <!-- Background -->
    <item>
        <shape>
            <solid android:color="#D2FFFFFF" />
            <corners android:radius="20dp" />
        </shape>
    </item>
</layer-list>

推荐阅读