In this tutorial you will learn how to create a Button
with different shapes in Android. Shape drawable resource is used to define shape of a view.
Create rect_button.xml file inside res/drawable
folder.
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <stroke android:color="#FF6F00" android:width="1dip"/> <solid android:color="#FFC107"/> <size android:width="100dp" android:height="100dp"/> </shape>
shape
defines shape of view and must be the root element. It can be rectangle, oval, line (requires the <stroke>
element to define the width of the line) and ring. In this case we are using oval shape to make the Button
circular.stroke
defines boundary of shape.solid
defines background color of shape.size
defines size of shape.Now set this xml as background
of the Button
.
<Button android:text="Button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/rect_button"/>
Let's add corners
, size
and gradient
.
<corners android:radius="3dip" /> <size android:width="100dp" android:height="30dp" /> <gradient android:angle="270" android:startColor="#DD2ECCFA" android:endColor="#DD000000"/>
The button will look like
Following are snippets for different shapes.
Cicrle
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="@color/md_red_600" /> <padding android:bottom="5dp" android:left="5dp" android:right="5dp" android:top="5dp" /> </shape>
Rectangle
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <solid android:color="@color/md_red_600" /> <padding android:bottom="5dp" android:left="5dp" android:right="5dp" android:top="5dp" /> </shape>
Ring
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="ring"> <solid android:color="@color/md_red_600" /> <padding android:bottom="5dp" android:left="5dp" android:right="5dp" android:top="5dp" /> </shape>
Line
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line"> <solid android:color="@color/md_red_600" /> <stroke android:width="1dp" /> <padding android:bottom="5dp" android:left="5dp" android:right="5dp" android:top="5dp" /> </shape>
Also we can set shape for a TextView
<TextView android:id="@+id/tvLabel" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/circle" android:layout_margin="5dp" android:text="TextView" android:textColor="#FFFFFF"/>
or programmatically
TextView tvLabel = (TextView) findViewByID (R.id.tvLabel); tvLabel.setBackgroundResource(R.id.circle);
Last stuff I want to expose is style for Button
. First, define style in res/values/styles
.
<resources> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style> <style name="ButtonStyle" parent="Theme.AppCompat.Light"> <item name="colorControlHighlight">#FFCCBC</item> <item name="colorButtonNormal">#FF5722</item> </style> </resources>
Second, set style for Button
<Button android:text="Animation" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="5dp" android:textColor="#FFFFFF" android:theme="@style/ButtonStyle" />
The button will look like