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

jyztefdp  于 2023-06-20  发布在  Android
关注(0)|答案(2)|浏览(141)

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

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  3. <item android:drawable="@drawable/shadowimg" />
  4. <item>
  5. <shape android:shape="oval">
  6. <solid
  7. android:color="#d63a33"/>
  8. <size
  9. android:width="70dp"
  10. android:height="70dp"/>
  11. </shape>
  12. </item>
  13. </layer-list>

正如您在代码中看到的,我正在添加一个具有android:drawable属性的阴影图像项。然而这并没有让影子显现出来。它只是显示了红色的圆圈形状。但我想在实心红色圆圈形状后面的阴影图像。根据我对层列表的一点点了解,顶部的项目放在后面,底部的项目放在第一位。
更新:在移动图像阴影到底部后,我得到了效果,但是实心红色圆圈的大小太大了,改变大小并不能改变大小。
更新代码:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
  3. <item>
  4. <shape android:shape="oval">
  5. <solid
  6. android:color="#d63a33"/>
  7. <size
  8. android:width="5dp"
  9. android:height="5dp"/>
  10. </shape>
  11. </item>
  12. <item android:drawable="@drawable/shadowimg" />
  13. </layer-list>

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

这就是发生的事情:

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

mzillmmw

mzillmmw1#

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

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
  3. <item>
  4. <shape android:shape="oval" >
  5. <solid android:color="#d63a33" />
  6. <size
  7. android:height="5dp"
  8. android:width="5dp" />
  9. </shape>
  10. </item>
  11. <item>
  12. <bitmap android:src="@drawable/shadowimg" />
  13. </item>
  14. <item>
  15. <shape android:shape="oval" >
  16. <solid android:color="#00000000" />
  17. <size
  18. android:height="5dp"
  19. android:width="5dp" />
  20. </shape>
  21. </item>
  22. </layer-list>

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

展开查看全部
xfyts7mz

xfyts7mz2#

实际上问题是在你使用的阴影中,阴影本身留下了一些填充。所以我们可以做的是,在我们使用stroke填充第一个项目的纯色中留出一些空间。
使用此代码:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
  3. <item>
  4. <shape android:shape="oval" >
  5. <solid android:color="#d63a33" />
  6. <stroke
  7. android:width="7dp"
  8. android:color="#00000000" />
  9. </shape>
  10. </item>
  11. <item android:drawable="@drawable/shadowimg"/>
  12. </layer-list>

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

  1. <TextView
  2. android:id="@+id/titleText"
  3. android:layout_width="30dp"
  4. android:layout_height="30dp"
  5. android:layout_centerVertical="true"
  6. android:layout_marginLeft="16dp"
  7. android:background="@drawable/circle_white"
  8. android:fontFamily="sans-serif-thin"
  9. android:gravity="center"
  10. android:text="Hi"
  11. android:textColor="#FF000000"
  12. android:textSize="16sp" />

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

展开查看全部

相关问题