我有这个可绘制的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>
如果我添加所有必需的偏移量,也会发生同样的情况。 根据{{3}},这不是我的预期 这里发生了什么? 如何让红框缩小5dp,如我所愿?
修改
我玩了一些偏移,找到了一些奇怪的东西,使用了一个5dp的负偏移,看看我得到了什么:
<item android:left="-5dp" android:top="5dp" android:right="5dp" android:bottom="5dp">
它仅适用于负值<= -5dp
。对于负值> 5dp
,它仍然不像以前那样显示帧。
我强烈认为所有这些行为的原因只能是两个中的一个: