How can I change the color of a button using the xml files? I tried using android:background="@android:color/black"
but it only works for black and white as far as I can tell. Can someone explain this to me. Why not android:background="@android:color/blue"
?

- 739
- 3
- 9
- 26
-
not all colors exist by name, you can define additional colors in colors.xml and afair use ARGB color codes directly like #ff00ff00 . But mind that assigning a background to s button disables the default multi-state background so it wont change color on press,focus... to assign all those you have to create a multistate drawable as proposed below – rupps Apr 21 '14 at 21:21
4 Answers
You can do this with a selector file like so:
<item android:state_pressed="true" >
<shape>
<gradient
android:startColor="@android:color/yellow"
android:endColor="@android:color/yellow"
android:angle="270" />
<stroke
android:width="3dp"
android:color="@android:color/grey" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item android:state_focused="true" >
<shape>
<gradient
android:endColor="@android:color/orange"
android:startColor="@android:color/orange"
android:angle="270" />
<stroke
android:width="3dp"
android:color="@android:color/grey" />
<corners
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:endColor="@android:color/blue"
android:startColor="@android:color/blue"
android:angle="270" />
<stroke
android:width="3dp"
android:color="@android:color/grey" />
<corner
android:radius="3dp" />
<padding
android:left="10dp"
android:top="10dp"
android:right="10dp"
android:bottom="10dp" />
</shape>
</item>
Name the file custom_button.xml for example, then in the actual button:
background="@drawable/custom_button"
Referenced from : Standard Android Button with a different color
Change color of button i have 2 answers for u :-
you can use android:background="#0000ff" for blue and for color codes u can visit http://html-color-codes.info/
i would suggest rather to use xml drawables to accomplish dat you will create a onclick state drawable and normal state drawable then you will use them in one drawable. This way you can give different color during onclick.
Thx.

- 437
- 1
- 4
- 12
you have to define drawable attibute for the items (for some reason it is required when it comes to background definitions), so:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@color/red"/> <!-- pressed -->
<item android:state_focused="true" android:drawable="@color/blue"/> <!-- focused -->
<item android:drawable="@color/black"/> <!-- default -->
</selector>
Also note that drawable attribute doesn't accept raw color values, so you have to define the colors as resources. Create colors.xml file at res/values folder:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="black">#000</color>
<color name="blue">#00f</color>
<color name="red">#f00</color>
</resources>
You can also take a look on this

- 394
- 1
- 3
- 17
you can create a file under res/values/
folder, and name it color.xml
. and then add your colors in that file like this :
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="blue" >#0000ff</color>
<color name="red" >#ff0000</color>
<color name="green">#00ff00</color>
</resources>
And then in your xml layout , you can specify the color you want like this :
android:background="@color/blue"
instead of
android:background="@android:color/blue"
NOTE : you can see this tutorial as an advanced step for you to use selectors on your buttons and views.

- 24,001
- 13
- 56
- 83