Problem :
And Custom background for my button, layout, textview, edittext and for all. This is a very nice look if you can add a custom background on your button. Suppose when someone click your android button it will be different background color or text color or any image.Solution:
First in your android app/res/drawable/ folder add alert_button.xml file which will contain the following code:
-------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_pressed="true" >
        <shape>
            <gradient
                android:startColor="#FF0000"
                android:endColor="#FF1223"
                android:angle="270" />
            <stroke
                android:width="2dp"
                android:color="#dcdcdc" />
            <corners
                android:radius="2dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
    <item android:state_focused="true" >
        <shape>
            <gradient
                android:startColor="#ffc2b7"
                android:endColor="#ffc2b7"
                android:angle="270" />
            <stroke
                android:width="2dp"
                android:color="#dcdcdc" />
            <corners
                android:radius="2dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
    <item>
        <shape>
            <gradient
                android:startColor="@color/red_deep"
                android:endColor="@color/red_light"
                android:angle="270" />
            <stroke
                android:width="2dp"
                android:color="#A6A6A6" />
            <corners
                android:radius="2dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
</selector>
You have done the most part of your custom xml background for you simple button.
Now in activity.xml file use it by this way,
-------------------------------------------
<Button
 android:text="Reset"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_gravity="right"
 android:background="@drawable/alert_button"
 android:textColor="@color/white"
 android:textStyle="bold"
 android:id="@+id/btn_reset"
 android:gravity="center" 
/>
-------------------------------------------And you have completed your work and see the result. I think that more awesome and pretty. In my case this is look like this when I'm clicking/pressed on the button
Now See precious look is(Reset Button is little dark):
Now See after applying the code and clicking on Reset Button (It is now more dark red as our defined style from XML):
Code Explanation:
Now come to code explanation, it is a very simple code. To add a condition for pressed state just make an item inside <selector>...</selector><item android:state_pressed="true" >
Then, inside <shape> just add the pressed color. We have to set two color Just do this:
<gradient android:startColor="#FF0000" android:endColor="#FF1223" android:angle="270"
/>
And without any state that means when no click,pressed, focused the code will look like this:
<item>
        <shape>
            <gradient
                android:startColor="@color/red_deep"
                android:endColor="@color/red_light"
                android:angle="270" />
            <stroke
                android:width="2dp"
                android:color="#A6A6A6" />
            <corners
                android:radius="2dp" />
            <padding
                android:left="10dp"
                android:top="10dp"
                android:right="10dp"
                android:bottom="10dp" />
        </shape>
    </item>
In this case additional padding is just for beautify.
I think all is clear to you now, Happy coding with android...


0 comments:
Post a Comment