How to set button selection color along with rounded corners in android?
I have found answer for my question with few trial & error attempts.
Here is the solution.
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_pressed="true"> <shape > <solid android:color="@color/green"/> <corners android:radius="7dp"/> </shape> </item> <item android:state_focused="true" > <shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="@color/green"/> <corners android:radius="7dp"/> </shape> </item> <item android:state_focused="false" > <shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="@color/red"/> <corners android:radius="7dp"/> </shape> </item> <item android:state_pressed="false" > <shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="@color/red"/> <corners android:radius="7dp" /> </shape> </item> </selector>
What I did was defined the shape and specify the dp of each corner.
<shape xmlns:android="http://schemas.android.com/apk/res/android"android:shape="rectangle" android:padding="90dp"><solid android:color="#FFFFFF"/><padding /><corners android:bottomRightRadius="15dp" android:bottomLeftRadius="15dp" android:topLeftRadius="15dp" android:topRightRadius="15dp"/></shape>
If you increase the dp in each corner it will make the button more rounded.
I have been successful at doing exactly what you're describing. I did the following:
First, I created a new class that extends Button. In this class, I created a method called setState():
public void setState (int s){ if (s > 0 && s < 4 &&) { this.state = s; switch (state) { case 1: setBackgroundDrawable (def_gray); break; case 2: setBackgroundDrawable (lt_gray); break; case 3: setBackgroundDrawable (black); } }}
The three background drawables you see above are XML files describing the button look. They are mostly the same, but vary in the color set for each one. The default gray button is described like this:
<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape> <gradient android:startColor="#333333" android:endColor="#333333" /> <stroke android:width="2dp" android:color="@android:color/white" /> <corners android:radius="5dp" /> <padding android:left="2dp" android:top="2dp" android:right="2dp" android:bottom="2dp" /> </shape> </item></selector>
As far as I know, that XML format is expecting to be used to configure a color gradient on the button face. Since that wasn't what I wanted, I set both color values the same and the background color is consistent. You may need to experiment a bit with color values, but it looks like you've already got a handle on that.