Android按钮的背景为阴影形状

Ali*_*lin 7 android shape button android-layout

我从形状中制作了一个按钮背景,看起来非常适合我的目的.唯一需要的是为它投下一点阴影.这是代码:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">

    <item android:state_pressed="true">
        <shape>
            <solid android:color="#343434" />

            <stroke android:width="1dp" android:color="#171717" />

            <corners android:radius="3dp" />

            <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
        </shape>
    </item>
    <item>
        <shape>
            <gradient android:angle="270" android:endColor="#E2E2E2" android:startColor="#BABABA" />

            <stroke android:width="1dp" android:color="#BABABA" />

            <corners android:radius="4dp" />

            <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
        </shape>
   </item>

</selector>
Run Code Online (Sandbox Code Playgroud)

这就是我想要实现的目标

在此输入图像描述

我该如何掉落阴影?我的猜测是我需要制作另一个形状但是带有黑色/灰色背景并设置某种形式的左边缘填充以使其看起来像阴影.但我不知道该怎么做......而且文档对我没有多大帮助.

稍后编辑:我想在xml文件中添加阴影而不是代码.谢谢.

Luk*_*rog 11

如果你想将更多的形状叠加在一起,那么你可以使用a layer-list.Bellow是选择器中常规项目的代码(带有灰色条带):

<item>
    <layer-list>
        <item android:right="5dp" android:top="5dp">
            <shape>
                <corners android:radius="3dp" />
                <solid android:color="#D6D6D6" />
            </shape>
        </item>
        <item android:bottom="2dp" android:left="2dp">
            <shape>
                <gradient android:angle="270" android:endColor="#E2E2E2" android:startColor="#BABABA" />
                <stroke android:width="1dp" android:color="#BABABA" />
                <corners android:radius="4dp" />
                <padding android:bottom="10dp" android:left="10dp" android:right="10dp" android:top="10dp" />
            </shape>
        </item>
    </layer-list>
</item>
Run Code Online (Sandbox Code Playgroud)

问题是你无法通过Button这种类型的drawable 实现真正的阴影效果.您可以使用其他答案中的代码或已经有阴影的九个补丁图像.


Rip*_*rot 5

试试这个...

<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape>
            <solid android:color="#000000" />

            <corners android:radius="7dp" />
        </shape>
    </item>
    <item
        android:bottom="5px"
        android:left="5px">
        <shape>
            <solid android:color="#FF0000" />

            <corners android:radius="7dp" />
        </shape>
    </item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)