Adding a color background and border radius to a Layout

android, android-layout

Solution

You don't need the separate fill item. In fact, it's invalid. You just have to add a `solid` block to the `shape`. The subsequent `stroke` draws on top of the `solid`:

<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle">

    <corners android:radius="5dp" />
    <solid android:color="@android:color/white" />
    <stroke
        android:width="1dip"
        android:color="@color/bggrey" />
</shape>

You also don't need the `layer-list` if you only have one `shape`.

Problem

I want to create a layout with rounded corners and a filled color background. This is my layout: ``` <LinearLayout android:layout_width="match_parent" android:layout_height="210dp" android:orientation="vertical" android:layout_marginBottom="10dp" android:background="@drawable/offerItemLayout"> <LinearLayout android:id="@+id/offerImageHolder" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> . . . </LinearLayout> </LinearLayout> ``` I have the following drawable xml (`offerItemLayout`) that creates the borders correctly: ``` <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="5dp"/> <stroke android:width="1dp" android:color="@color/bggrey" /> </shape> </item> // The lines below causes an inflation failure. <item> <fill android:color="@color/white"/> </item> </layer-list> ``` But inserting the item with a fill causes the inflation of the layout to fail. Additionally, if I assign a color background to my inner LinearLayout (`offerImageHolder`), it overrides the first background with my rounded corners. Any thoughts on doing this properly? :/

Original source