如何在xml中使用纯色形状后面的drawable添加阴影?

时间:2014-11-03 03:26:03

标签: android xml drawable layer-list

我有一个.png图像,它是一个圆形的形状,只是一个阴影。我所拥有的是ImageButton,其中包含android:src属性的图像。对于它的背景,我可以在可绘制文件中有一个xml文件。我现在想要的是让阴影图像成为另一个固体形状后面的png - >机器人:形状="椭圆"

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

    <item android:drawable="@drawable/shadowimg" />

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

            <solid
                android:color="#d63a33"/>

            <size
                android:width="70dp"
                android:height="70dp"/>
        </shape>
    </item>
</layer-list>

正如您在代码中看到的那样,我添加了一个带有android:drawable属性的阴影图像的项目。然而,这不会让阴影显示出来。它只显示红色圆圈形状。但我希望阴影图像背后是纯红色圆圈形状。根据我对图层列表的微小知识,顶部项目位于后面,底部的项目位于第一位。

更新:将图像阴影移动到底部后,我得到了效果,但是实心红色圆圈形状的尺寸太大,改变尺寸不会改变尺寸。

更新代码:

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

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

            <solid
                android:color="#d63a33"/>

            <size
                android:width="5dp"
                android:height="5dp"/>
        </shape>
    </item>
    <item android:drawable="@drawable/shadowimg" />
</layer-list>

****更新2:**** 我注意到当我删除<item android:drawable="@drawable/shadowimg" />时,我可以更改实心圆形的大小,但是当我添加它时,它默认为更大的尺寸。

这就是:

enter image description here

如果有人需要,这里是阴影图片:

enter image description here

2 个答案:

答案 0 :(得分:0)

我认为这应该是你的解决方案:

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

   <item>
    <shape android:shape="oval" >
        <solid android:color="#d63a33" />

        <size
            android:height="5dp"
            android:width="5dp" />
    </shape>
 </item>

 <item>
    <bitmap android:src="@drawable/shadowimg" />
 </item>

 <item>
    <shape android:shape="oval" >
        <solid android:color="#00000000" />

        <size
            android:height="5dp"
            android:width="5dp" />
    </shape>
 </item>

 </layer-list>

我添加了另一个具有所需大小的透明层。

答案 1 :(得分:0)

实际上问题出在您正在使用的阴影中,阴影本身会留下一些填充。所以我们可以做的是,通过使用笔划在第一个项目中填充一些纯色。

使用此代码:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
        <shape android:shape="oval" >
            <solid android:color="#d63a33" />

            <stroke
                android:width="7dp"
                android:color="#00000000" />
        </shape>
    </item>
    <item android:drawable="@drawable/shadowimg"/>
</layer-list>

然后使用30dp的高度和30dp的宽度,如

<TextView
    android:id="@+id/titleText"
    android:layout_width="30dp"
    android:layout_height="30dp"
    android:layout_centerVertical="true"
    android:layout_marginLeft="16dp"
    android:background="@drawable/circle_white"
    android:fontFamily="sans-serif-thin"
    android:gravity="center"
    android:text="Hi"
    android:textColor="#FF000000"
    android:textSize="16sp" />

如果你想增加视图的高度和宽度,只需增加笔划的宽度..