1

I need to create some drawables that look like image below, is there a way to do this in xml?

image

Edit:

I have got this:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <shape android:shape="rectangle">
            <solid android:color="@color/darker_gray" />
            <corners android:radius="6dp" />
        </shape>
    </item>

    <item
        android:bottom="3dp">
        <shape android:shape="rectangle">
            <solid android:color="@color/dark_gray" />
            <corners android:radius="6dp" />
        </shape>
    </item>
</layer-list>

it's the same like on the picture without that blue corner and I have no idea how to do that diagonal shape. Now I'm using 9 patch, but since all my other buttons are in xml, I was just wondering if there is some way to write this also in xml

Glorfindel
  • 21,988
  • 13
  • 81
  • 109
nefry
  • 69
  • 5

2 Answers2

1

Try this code, i guess this is what you want:

draw.xml

 <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android" >


     <item>
          <shape 
            android:shape="rectangle">
            <size android:width="100dp"
                        android:height="60dp"/>
                <stroke android:width="2dp" android:color="#333333" />
                <solid android:color="#333333" />
                <padding android:bottom="3dp"/>
                <corners android:radius="5dp"/>
            </shape>
       </item>

       <item>
          <shape 
            android:shape="rectangle">
                <size android:width="100dp"
                        android:height="60dp"/>
                <stroke android:width="2dp" android:color="#000000" />
                <solid android:color="#000000" />
                <padding android:bottom="1dp"/>
                <corners android:radius="5dp"/>
            </shape>
       </item>


       <item>
            <rotate
                android:fromDegrees="-45"
                android:toDegrees="45"
                android:pivotX="-40%"
                android:pivotY="87%" >
                <shape
                    android:shape="rectangle" >
                    <size android:width="50dp"
                        android:height="50dp"/>
                    <stroke android:color="@android:color/transparent" android:width="0dp"/>
                    <solid
                        android:color="@android:color/holo_blue_light" />
                    <corners android:radius="5dp"/>
                </shape>
            </rotate>
        </item>
        <item>
          <shape 
            android:shape="rectangle">
                <size android:width="100dp"
                        android:height="60dp"/>
                <stroke android:width="2dp" android:color="@android:color/transparent" />
                <solid android:color="@android:color/transparent" />
                <corners android:radius="5dp"/>
            </shape>
       </item> 
    </layer-list>

and in your layout file

<RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
        android:layout_centerInParent="true"
        android:background="@drawable/draw" >
    </RelativeLayout>
Aakash
  • 5,181
  • 5
  • 20
  • 37
0

You should use layer list to combine multiple drawables below is an example.

You should also check this very complete guide to android drawable

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item>
      <shape 
        android:shape="rectangle">
            <stroke android:width="1dp" android:color="#585858" />
            <solid android:color="#FF9009" />
            <padding android:bottom="1dp"/>
        </shape>
   </item>
   <item android:left="10dp" android:top="20dp" android:bottom="20dp" android:right="150dp">
      <shape 
        android:shape="oval">
            <stroke android:width="1dp" android:color="#ffffff" />
            <solid android:color="#118C4E" />
            <padding android:bottom="1dp"/>
        </shape>
   </item>
   <item android:left="150dp" android:top="20dp" android:bottom="20dp" android:right="10dp">
      <shape 
        android:shape="rectangle">
            <stroke android:width="1dp" android:color="#ffffff" />
            <solid android:color="#C1E1A6" />
            <padding android:bottom="1dp"/>
        </shape>
   </item>
</layer-list>
Williem
  • 1,131
  • 1
  • 12
  • 19