<item>偏移行为不是我预期的</item>

时间:2013-04-25 18:09:18

标签: android xml offset shapes layer-list

我有这个可绘制的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个矩形,只是框架黄色和红色矩形)

enter image description here

这表示黄色框绘制正常,红色框绘制为左偏移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>

enter image description here

如果我添加所有必需的偏移量,也会发生同样的情况。 根据{{​​3}},这不是我的预期 这里发生了什么? 如何让红框缩小5dp,如我所愿?

修改
我玩了一些偏移,找到了一些奇怪的东西,使用了一个5dp的负偏移,看看我得到了什么:

    <item android:left="-5dp" android:top="5dp" android:right="5dp" android:bottom="5dp">

enter image description here

它仅适用于负值<= -5dp。对于负值> 5dp,它仍然不像以前那样显示帧。

我强烈认为所有这些行为的原因只能是两个中的一个:

  • 我粗略地误解了应该如何使用偏移值
  • 这是一种越野行为(在这种情况下我想要确认,以便我可以报告)

0 个答案:

没有答案