将阴影添加到自定义视图前棒棒糖

时间:2015-11-15 09:57:53

标签: android

我正在尝试在前棒棒糖设备上为自定义视图添加阴影。我正在使用这个xml:

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

    <item android:top="8px">
        <layer-list>
            <item>
                <shape android:shape="oval">
                    <solid android:color="#08000000"/>
                    <padding
                        android:bottom="3px"
                        android:left="3px"
                        android:right="3px"
                        android:top="3px"
                        />
                </shape>
            </item>
            <item>
                <shape android:shape="oval">
                    <solid android:color="#09000000"/>
                    <padding
                        android:bottom="2px"
                        android:left="2px"
                        android:right="2px"
                        android:top="2px"
                        />
                </shape>
            </item>
            <item>
                <shape android:shape="oval">
                    <solid android:color="#10000000"/>
                    <padding
                        android:bottom="2px"
                        android:left="2px"
                        android:right="2px"
                        android:top="2px"
                        />
                </shape>
            </item>
            <item>
                <shape android:shape="oval">
                    <solid android:color="#11000000"/>
                    <padding
                        android:bottom="1px"
                        android:left="1px"
                        android:right="1px"
                        android:top="1px"
                        />
                </shape>
            </item>
            <item>
                <shape android:shape="oval">
                    <solid android:color="#12000000"/>
                    <padding
                        android:bottom="1px"
                        android:left="1px"
                        android:right="1px"
                        android:top="1px"
                        />
                </shape>
            </item>
            <item>
                <shape android:shape="oval">
                    <solid android:color="#13000000"/>
                    <padding
                        android:bottom="1px"
                        android:left="1px"
                        android:right="1px"
                        android:top="1px"
                        />
                </shape>
            </item>
            <item>
                <shape android:shape="oval">
                    <solid android:color="#14000000"/>
                    <padding
                        android:bottom="1px"
                        android:left="1px"
                        android:right="1px"
                        android:top="1px"
                        />
                </shape>
            </item>
            <item>
                <shape android:shape="oval">
                    <solid android:color="#15000000"/>
                    <padding
                        android:bottom="1px"
                        android:left="1px"
                        android:right="1px"
                        android:top="1px"
                        />
                </shape>
            </item>

        </layer-list>
    </item>

    <item android:drawable="@drawable/ripple" android:state_pressed="false"/>
    <item android:drawable="@drawable/ripple_dark" android:state_pressed="true"/>

</layer-list>

在我的布局中:

<ImageButton
    android:id="@+id/view"
    android:layout_width="54dp"
    android:layout_height="54dp"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true"
    android:layout_gravity="bottom|right|end"
    android:layout_marginBottom="16dp"
    android:layout_marginEnd="16dp"
    android:layout_marginRight="16dp"
    android:background="@drawable/background"
    android:contentDescription="@string/play"
    android:src="@drawable/image" />

问题在于我希望图像按钮为54dpx54dp,但如果我添加填充,则内部图像会更小。我应该添加更多的dp来补偿填充,但我不知道我该怎么办。有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

只需在每个需要阴影的元素的底部添加以下视图:

<View
     android:id="@+id/shadow"
     android:layout_width="fill_parent"
     android:layout_height="5dp"
     android:layout_below="@+id/..."
     android:background="@drawable/drop_shadow" />

drop_shadow.xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
  <gradient
    android:startColor="#bfbbbf"
    android:endColor="#F1F1F1"
    android:angle="270">
  </gradient>
</shape>