繁体   English   中英

如何实现卡片视图上的阴影?

[英]How to achieve shadow over the card view?

我正在尝试实现以下布局:

在此处输入图片说明

  1. 我想在点击时展开每个视图。
  2. 如何获得每个视图的阴影?

我尝试了以下可绘制对象:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">

  <item>
    <shape android:shape="rectangle">

      <gradient
          android:startColor="#cacaca"
          android:centerColor="#b6b6b6"
          android:endColor="#e9e9e9"
          />
    </shape>

    <gradient
        android:startColor="#6586F0"
        android:centerColor="#D6D6D6"
        android:endColor="#4B6CD6"
        android:angle="90"/>
  </item>

  <item
      android:left="0dp"
      android:right="0dp"
      android:top="5dp"
      android:bottom="2dp">
    <shape android:shape="rectangle">
      <solid android:color="#ffffff"/>
      <corners android:radius="20dp"/>
    </shape>
  </item>
</layer-list>

但它显示以下视图:

在此处输入图片说明

请帮助我实现正确的视图。

您可以通过在FrameLayout内嵌套多个cardViews来实现这一点。 更改android:layout_marginTopapp:cardElevation属性以提供此堆栈效果。

试试下面的代码:

对于可绘制:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <!-- Drop Shadow Stack -->
    <item>
        <shape android:shape="rectangle">
            <padding
                android:left="1dp"
                android:right="1dp"
                android:top="1dp" />
            <corners android:topLeftRadius="20dp"
                android:topRightRadius="20dp"/>
            <solid android:color="#14000029" />
        </shape>
    </item>
    <item>
        <shape android:shape="rectangle">
            <padding
                android:left="1dp"
                android:right="1dp"
                android:top="1dp" />
            <corners android:topLeftRadius="20dp"
                android:topRightRadius="20dp"/>
            <solid android:color="#14000029" />
        </shape>
    </item>
    <item>
        <shape
            android:shape="rectangle">
            <padding
                android:left="1dp"
                android:right="1dp"
                android:top="1dp" />

            <corners android:topLeftRadius="20dp"
                android:topRightRadius="20dp"/>
            <solid android:color="#14000029" />
        </shape>
    </item>
    <!-- Background -->
    <item>
        <shape
            android:shape="rectangle">
            <corners android:topLeftRadius="20dp"
                android:topRightRadius="20dp"/>
            <solid android:color="@android:color/white"/>
        </shape>
    </item>
</layer-list>

布局文件中的代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".CardViewShadowActivity"
    android:layout_marginTop="30dp">
    <LinearLayout
        android:id="@+id/linear_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:paddingTop="10dp"
        android:paddingBottom="30dp"
        android:background="@drawable/custom_bg">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello"/>
    </LinearLayout>
    <LinearLayout
        android:id="@+id/linear_2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:paddingTop="10dp"
        android:paddingBottom="30dp"
        android:background="@drawable/custom_bg"
        android:layout_below="@id/linear_1"
        android:layout_marginTop="-20dp">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello"/>
    </LinearLayout>
    <LinearLayout
        android:id="@+id/linear_3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:paddingTop="10dp"
        android:paddingBottom="30dp"
        android:background="@drawable/custom_bg"
        android:layout_below="@id/linear_2"
        android:layout_marginTop="-20dp">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello"/>
    </LinearLayout>
    <LinearLayout
        android:id="@+id/linear_4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:paddingTop="10dp"
        android:paddingBottom="30dp"
        android:background="@drawable/custom_bg"
        android:layout_below="@id/linear_3"
        android:layout_marginTop="-20dp">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Hello"/>
    </LinearLayout>
</RelativeLayout>

根据您的需要自定义布局和可绘制。

上面代码的输出是:

在此处输入图片说明

我希望这可以帮助你

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM