Android button with different background colors


i want to change the background-color of a button using a selector-xml-file. My approach is basically the one from the example at the bottom this page:

i have a res/color/button_text.xml which looks like this:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="">
    <item android:state_pressed="true"
          android:color="#ffff0000"/> <!-- pressed -->
    <item android:state_focused="true"
          android:color="#ff0000ff"/> <!-- focused -->
    <item android:color="#ff000000"/> <!-- default -->

and my layout contains the following code:

    **android:background="@color/button_text"** /> 

(** is only there to show you that i use android:background instead of android:textcolor)

this code crashes. it says "Binary XML file line #4 tag requires 'drawable' attribute or child tag defining drawable. But if I try it with android:textColor as described in the above link it works fine. So it has to be the background issue. I don't want to create a 9patch-png if it's not necessary (basically i just need a "clickable" rectangle so i use a button with a colored background)

9/17/2010 8:43:38 PM

As your error states, 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="">
    <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 -->

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"?>
     <color name="black">#000</color>
     <color name="blue">#00f</color>
     <color name="red">#f00</color>
3/13/2012 7:27:25 PM

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow