Search code examples
androidxmlbackgrounddrawablelayer-list

Android xml layer-list not displayed correctly on some devices


I have an xml layer list drawable as a background for view, which is not displayed correctl on some devices.

I have a Huawei Ascend Mate with 4.2.2 which displays it ok. On Asus phonepad tablet with 4.1.2 i see just the item shape stroke and dont see the other items.

What am I doing wrong?

<?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>

Solution

  • I've fixed the issue. Apparently on some devices (android 4.0 and 4.1.1) the following code made all layers below the following shape to be overpainted with black color.

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

    I have added transparent solid color for the shape and now it works fine.

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

    So never leave shapes with border without color as some devices will paint it black!