Android <;项目>;这不是我所期望的
我有这个可绘制的XML文件。目标是绘制两个同心框架,外部为黄色,内部为红色。我希望所有这些都用XML完成,使用形状,而不是代码,也不使用位图Android <;项目>;这不是我所期望的,android,xml,offset,shapes,layer-list,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="rect
<?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>
如果我添加所有必需的偏移,也会发生同样的情况。
根据这里发生了什么? 如何使红色边框按我所希望的那样缩小5 DP 编辑
我玩了一点偏移量,发现了一些奇怪的东西,使用一个负偏移量5dp,看看我得到了什么:
<item android:left="-5dp" android:top="5dp" android:right="5dp" android:bottom="5dp">
它只适用于负值5dp
它仍然不会像以前那样显示帧
我强烈认为,所有这些行为的原因只能是二分之一:
- 我完全误解了应该如何使用偏移值
- 这是一种错误行为(在这种情况下,我希望得到确认,以便报告)
图层列表
以及你在哪里测试/看到了所描述的行为(模拟器/特定手机/特定版本)?@Luksprog图层列表是框架布局中图像视图
元素的android:background
。我的项目从min version 14到version 17进行定义,并在运行英特尔HAXM的AVD target android-15上执行。不幸的是,我的平板电脑几周前被偷了,现在我没有真正的设备来测试它。我无法重现这种行为(使用您的条件进行测试),所以我假设您的代码中还有其他内容。如果您可以提供一个简单的示例来复制该行为,请将其发布到此处,或者将其报告为bug。@Luksprog我从头开始创建了一个新项目,其中仅包含布局框架,并按预期工作。所以问题一定是在其他地方,我真正的项目要复杂得多,并且使用库,到处都是布局和代码,我必须确定是什么在我的设置中导致了这一点。如果我这样做了,我会把答案贴在这里。