CardView 里面的 CardView 没有阴影

CardView inside CardView Doesn't Have Shadow

我有一个CardView里面另一个CardView,但是childCardView 周围没有阴影。知道为什么吗?

        <android.support.v7.widget.CardView
                android:layout_width="match_parent"
                android:layout_height="match_parent"
            card_view:cardBackgroundColor="@color/WHITE_COLOR"
            card_view:cardCornerRadius="20dp"
            card_view:cardElevation="3dp"
            card_view:cardPreventCornerOverlap="false"
            card_view:contentPadding="0dp">

            <android.support.v7.widget.CardView
                android:layout_width="200dp"
                android:layout_height="200dp"
                android:layout_centerInParent="true"
                card_view:cardBackgroundColor="@color/RED_COLOR"
                card_view:cardCornerRadius="20dp"
                card_view:cardElevation="6dp"
                card_view:cardPreventCornerOverlap="false"
                card_view:contentPadding="0dp">


            </android.support.v7.widget.CardView>

        </android.support.v7.widget.CardView>

暂时使用此代码..

<android.support.v7.widget.CardView
                    android:layout_width="match_parent"
                    android:layout_height="match_parent"
                card_view:cardBackgroundColor="@color/WHITE_COLOR"
                card_view:cardCornerRadius="20dp"
                card_view:cardElevation="3dp"
                card_view:cardPreventCornerOverlap="false"
                card_view:contentPadding="0dp">

                <android.support.v7.widget.CardView
                    android:layout_width="200dp"
                    android:layout_height="200dp"
                    android:layout_centerInParent="true"
                    card_view:cardBackgroundColor="@color/RED_COLOR"
                    card_view:cardCornerRadius="20dp"
                    card_view:cardElevation="6dp"
                    card_view:cardPreventCornerOverlap="false"
                    card_view:contentPadding="0dp">


                </android.support.v7.widget.CardView>
                 <View
                android:layout_width="match_parent"
                android:layout_height="4dp"
                android:background="@drawable/shadow" />

            </android.support.v7.widget.CardView>

将此 xml 代码包含在名为 shadow.xml

的可绘制文件夹中
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="@android:color/transparent"
        android:endColor="#40000000"
        android:angle="90" />
</shape

我遇到了完全一样的问题

card_view:cardUseCompatPadding="true" 

解决了

所以每张卡片看起来都像

                <android.support.v7.widget.CardView
                    card_view:cardUseCompatPadding="true"
                    card_view:cardElevation="4dp"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content">
                   ...
                </android.support.v7.widget.CardView>

您可以在具有 属性 layout_marginTop 的 CardView 下方添加 View。通过这样做我的问题就解决了,希望你的也是。

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:orientation="vertical"

    <androidx.cardview.widget.CardView
        android:id="@+id/cvLogin"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_marginTop="10dp"
        app:cardBackgroundColor="@android:color/white"
        app:cardCornerRadius="20dp"
        app:cardElevation="2dp"
        app:cardPreventCornerOverlap="false"
        app:cardUseCompatPadding="false">

        <androidx.cardview.widget.CardView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="center"
            android:layout_margin="1dp"
            app:cardBackgroundColor="@color/colorPrimary"
            app:cardCornerRadius="20dp"
            app:cardElevation="0dp">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="center"
                    android:text="Log In"
                    android:textAllCaps="true"
                    android:textColor="@android:color/white"
                    android:textSize="13sp" />

        </androidx.cardview.widget.CardView>

    </androidx.cardview.widget.CardView>

    <View
        android:layout_width="10dp"
        android:layout_height="10dp"
        android:layout_marginTop="5dp" />
</LinearLayout>