1. Color State List Resource
A ColorStateList is an object you can define in XML that you can apply as a color, but will actually change colors, depending on the state of
the View object to which it is applied. For example, a Button widget can exist in one of several different states (pressed, focused, or
niether) and, using a color state list, you can provide a different color during each state.
You can describe the state list in an XML file. Each color is defined in an <item>
element inside a single <selector>
element. Each <item>
uses
various attributes to describe the state in which it should be used.
2. Syntax
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" >//This must be the root element. Contains one or more <item> elements. <item //Defines a color to use during certain states, as described by its attributes android:color="hex_color" android:state_pressed=["true" | "false"] android:state_focused=["true" | "false"] android:state_selected=["true" | "false"] android:state_checkable=["true" | "false"] android:state_checked=["true" | "false"] android:state_enabled=["true" | "false"] android:state_window_focused=["true" | "false"] /> </selector>
3. Example
//res/color/button_color.xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true" android:color="#ffff0000"/> <!-- pressed --> <item android:state_focused="true" android:color="#ff0000ff"/> <!-- focused --> <item android:color="#ff000000"/> <!-- default --> </selector>
//activity.xml <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/button_color" android:text="Button" />