我有这个可绘制的 XML 文件。目标是绘制两个同心框架,外部为黄色,内部为红色。我希望这一切都在 XML 中完成,使用形状,而不是代码和位图。
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent"/>
<stroke android:width="15dp" android:color="@color/Yellow"/>
</shape>
</item>
<item android:left="5dp">
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent"/>
<stroke android:width="3dp" android:color="@color/Red"/>
</shape>
</item>
</layer-list>
这会生成这个屏幕(忽略里面的 3 个矩形,只是框架的黄色和红色矩形)
这表明黄框绘制正常,红框绘制左偏移 5dp。我最后的红框应该四面八方
<item android:left="5dp" android:top="5dp" android:right="5dp" android:bottom="5dp">
看看当我只添加另一个偏移量时会发生什么
<item android:left="5dp" android:top="5dp">
<shape android:shape="rectangle">
<solid android:color="@android:color/transparent"/>
<stroke android:width="3dp" android:color="@color/Red"/>
</shape>
</item>
如果我添加所有必需的偏移量,也会发生同样的情况。这不是我所期望的,根据关于项目偏移的文档
这里发生了什么?我怎样才能让红框按我的意愿缩小 5dp?
编辑
我用偏移量玩了一点,发现一些奇怪的东西,使用一个 5dp 的负偏移量,看看我得到了什么:
<item android:left="-5dp" android:top="5dp" android:right="5dp" android:bottom="5dp">
它只适用于负值<= -5dp
。对于负值> 5dp
,它仍然不会像以前一样显示帧。
我强烈认为所有这些行为的原因只能是二分之一:
- 我严重误解了应该如何使用偏移值
- 这是一个错误的行为(在这种情况下,我想确认,以便我可以报告它)