1

我有这个可绘制的 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,它仍然不会像以前一样显示帧。

我强烈认为所有这些行为的原因只能是二分之一:

  • 我严重误解了应该如何使用偏移值
  • 这是一个错误的行为(在这种情况下,我想确认,以便我可以报告它)
4

0 回答 0