首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在xml中使用可绘制的纯色形状添加阴影?

如何在xml中使用可绘制的纯色形状添加阴影?
EN

Stack Overflow用户
提问于 2014-11-03 11:26:03
回答 2查看 9.3K关注 0票数 0

我有一个.png图像,它是一个圆形,只是一个阴影。我所拥有的是一个具有android:src属性的图像的ImageButton。对于它的背景,我可以有一个可绘图文件中的xml文件。我现在想要的是有一个阴影图像,这是一个png去后面的另一个固体形状-> android:shape=“椭圆”。

代码语言:javascript
复制
<?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属性添加一个带有阴影图像的项。但是,这不会让阴影显示出来。它只显示红色的圆圈形状。但我想要实心红色圆圈后面的阴影图像。从我对layer-list的了解来看,最上面的项目放在后面,底部的项目放在第一位。

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

更新的代码:

代码语言:javascript
复制
<?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" />时,我可以改变实心圆形状的大小,但当我添加这个时,它默认为更大的大小。

这就是发生的事情:

如果有人需要的话,下面是阴影图像:

EN

回答 2

Stack Overflow用户

发布于 2014-11-03 12:13:40

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

代码语言:javascript
复制
<?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>

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

票数 0
EN

Stack Overflow用户

发布于 2015-05-28 15:13:05

实际上,问题出在你正在使用的阴影中,阴影本身留下了一些填充。因此,我们可以做的是,在使用笔划填充第一项的纯色中留出一些空间。

使用以下代码:

代码语言:javascript
复制
<?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的宽度,例如

代码语言:javascript
复制
<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" />

如果您想增加视图的高度和宽度,也只需增加笔触的宽度。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26707332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档