11

我有一个可绘制的 xml 图层列表作为视图的背景,在某些设备上无法正确显示。

我有一个 4.2.2 的华为 Ascend Mate,显示正常。在 4.1.2 的华硕 phonepad 平板电脑上,我只看到项目形状描边,看不到其他项目。

我究竟做错了什么?

<?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="@color/yellow_color" />
        </shape>
    </item>
    <item>
        <bitmap
            android:gravity="center_horizontal|bottom"
            android:src="@drawable/dotted_bg"
            android:tileMode="repeat" />
    </item>
    <item>
        <shape>
            <stroke
                android:width="4dp"
                android:color="@color/yellow_color" />
        </shape>
    </item>
    <item>
        <bitmap
            android:gravity="center_horizontal|bottom"
            android:src="@drawable/tls_bg" />
    </item>

</layer-list>
4

3 回答 3

46

我已经解决了这个问题。显然,在某些设备(android 4.0 和 4.1.1)上,以下代码使以下形状下方的所有图层都被黑色覆盖。

<item>
    <shape>
        <stroke
            android:width="4dp"
            android:color="@color/yellow_color" />
    </shape>
</item>

我为形状添加了透明的纯色,现在效果很好。

<item>
    <shape>
        <stroke
            android:width="4dp"
            android:color="@color/yellow_color" />
        <solid android:color="@android:color/transparent" />
    </shape>
</item>

所以永远不要留下没有颜色的有边框的形状,因为有些设备会把它涂成黑色!

于 2014-11-11T07:24:30.250 回答
0

手机使用不同的 API 级别:16 和 17。确保您没有针对特定目标的多个目录(例如values-v16values-v17)。

此外,未显示的项目包含对某些可绘制对象的引用,因此请确保每个屏幕 dpi的每个可绘制目录中的文件都是正确的。

于 2014-11-01T20:22:48.757 回答
0

那可能是因为可绘制对象的 android:src="@drawable/dotted_bg",android:src="@drawable/dotted_bg"android:src="@drawable/tls_bg"太大了。找到您设备的屏幕密度并检查它的相应资源文件夹(例如drawable-xhdpi),并使该文件夹中的drawable 更小。

于 2014-11-03T09:51:45.977 回答