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? :/
To get background color of a Layout: LinearLayout lay = (LinearLayout) findViewById(R. id. lay1); ColorDrawable viewColor = (ColorDrawable) lay.
To do that right click on drawable (under resources), choose New, choose Drawable Resource File. Name the resource rounded_blue_border and make the root element shape. We will use the attributes stroke, corners and padding. The stroke determines the width and color of the border.
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
.
background.xml in drawable folder.
<?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <solid android:color="#FFFFFF"/> <stroke android:width="3dp" android:color="#0FECFF" /> //specify gradient <gradient android:startColor="#ffffffff" android:endColor="#110000FF" android:angle="90"/> <padding android:left="5dp" android:top="5dp" android:right="5dp" android:bottom="5dp"/> <corners android:bottomRightRadius="7dp" android:bottomLeftRadius="7dp" android:topLeftRadius="7dp" android:topRightRadius="7dp"/> </shape> <LinearLayout android:layout_width="match_parent" android:layout_height="210dp" android:orientation="vertical" android:layout_marginBottom="10dp" android:background="@drawable/background">
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With