【问题标题】:How to add elevation for shape?如何为形状添加高程?
【发布时间】:2020-07-19 10:16:53
【问题描述】:
现在我有了下一个矩形:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="28dp" />
<gradient
android:endColor="#FFFFFF"
android:gradientRadius="20dp"
android:startColor="#FFFFFF"
android:type="linear" />
<size
android:width="106dp"
android:height="106dp" />
<stroke
android:width="1dp"
android:color="#0189ff" />
</shape>
还有下一个结果:
问:如何添加阴影/高度而不是描边?
【问题讨论】:
标签:
android
xml
shapes
android-elevation
【解决方案1】:
你不能直接应用阴影来代替描边。
为此,您需要使用 <layer-list></layer-list> 自定义 XML
喜欢
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Drop Shadow Stack -->
<item>
<shape>
<padding
android:bottom="@dimen/_3sdp"
android:left="@dimen/_1sdp"
android:right="@dimen/_3sdp"
android:top="@dimen/_1sdp" />
<solid android:color="#00dff2e4" />
<corners android:radius="@dimen/_5sdp" />
</shape>
</item>
<item>
<shape>
<padding
android:bottom="@dimen/_3sdp"
android:left="@dimen/_1sdp"
android:right="@dimen/_3sdp"
android:top="@dimen/_1sdp" />
<solid android:color="#10dff2e4" />
<corners android:radius="@dimen/_50sdp" />
</shape>
</item>
<item>
<shape>
<padding
android:bottom="@dimen/_3sdp"
android:left="@dimen/_1sdp"
android:right="@dimen/_3sdp"
android:top="@dimen/_1sdp" />
<solid android:color="#20dff2e4" />
<corners android:radius="@dimen/_50sdp" />
</shape>
</item>
<item>
<shape>
<padding
android:bottom="@dimen/_3sdp"
android:left="@dimen/_1sdp"
android:right="@dimen/_3sdp"
android:top="@dimen/_1sdp" />
<solid android:color="#30dff2e4" />
<corners android:radius="@dimen/_50sdp" />
</shape>
</item>
<item>
<shape>
<padding
android:bottom="@dimen/_3sdp"
android:left="@dimen/_1sdp"
android:right="@dimen/_3sdp"
android:top="@dimen/_1sdp" />
<solid android:color="#50dff2e4" />
<corners android:radius="@dimen/_50sdp" />
</shape>
</item>
<!-- Background -->
<item>
<shape>
<solid android:color="@android:color/white" />
<corners android:radius="@dimen/_50sdp" />
</shape>
</item>
</layer-list>
输出