XML可绘制对象在4.3和4.1.2上表现不同

8
我有以下的可绘制对象:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <corners android:radius="3dp"/>
    <padding android:left="1dp" android:right="1dp" android:top="1dp" android:bottom="1dp"/>
     <stroke android:width="1dp" android:color="#e4e4e4"/>

</shape>

“它应该”在设置背景时绘制边框,实际上在(Android 4.3 / Google Nexus 7)上确实如此,但不幸的是,在(Android 4.1.2 / Samsung Galaxy Tab 10”)上它只是填充整个背景颜色。

如果有人能告诉我我做错了什么,或者如果有人有一个用于边框的xml drawable,我将非常感激:=)


将您的填充增加到5dp,请尝试。 - Raghunandan
我用以下代码更改了填充: <padding android:left="5dp" android:right="5dp" android:top="5dp" android:bottom="5dp"/> 但是我仍然遇到同样的问题。 - Simo
我刚试了一下,对我有效。我只是把填充改成了5p。增加你的填充并尝试。我在手机上测试过,没有在平板电脑上测试。 - Raghunandan
即使我完全删除了填充行,对我来说仍然很奇怪:(,谢谢。 - Simo
我最终找到了一个更好的可绘制对象,我将其作为答案 :) - Simo
2个回答

19

这里提供了与原图相同的解决方案。

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle">
    <solid android:color="@android:color/transparent" />
    <corners android:radius="3dp"/>
    <stroke android:width="1dip" android:color="#e2e2e2"/>
</shape>

我只需要指定一个纯色:

 <solid android:color="@android:color/transparent" />

1

一个边框可绘制的代码,可以在两个版本上更好地工作:

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<!-- This is the line -->
    <item android:top="1px" android:right="1px" android:left="1px" android:bottom="1px">
      <shape>
            <solid android:color="@android:color/transparent" />
            <corners android:radius="3dp"/>
            <stroke android:width="1px" android:color="#e4e4e4" />
      </shape>
    </item>

</layer-list>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接