Skip to content

Most visited

Recently visited

navigation

ColorStateList

public class ColorStateList
extends Object implements Parcelable

java.lang.Object
   ↳ android.content.res.ColorStateList


Lets you map View state sets to colors.

ColorStateLists are created from XML resource files defined in the "color" subdirectory directory of an application's resource directory. The XML file contains a single "selector" element with a number of "item" elements inside. For example:

 <selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_focused="true"
           android:color="@color/sample_focused" />
   <item android:state_pressed="true"
           android:state_enabled="false"
           android:color="@color/sample_disabled_pressed" />
   <item android:state_enabled="false"
           android:color="@color/sample_disabled_not_pressed" />
   <item android:color="@color/sample_default" />
 </selector>
 
This defines a set of state spec / color pairs where each state spec specifies a set of states that a view must either be in or not be in and the color specifies the color associated with that spec.

State specs

Each item defines a set of state spec and color pairs, where the state spec is a series of attributes set to either true or false to represent inclusion or exclusion. If an attribute is not specified for an item, it may be any value.

For example, the following item will be matched whenever the focused state is set; any other states may be set or unset:

 <item android:state_focused="true"
         android:color="@color/sample_focused" />
 

Typically, a color state list will reference framework-defined state attributes such as android:state_focused or android:state_enabled; however, app-defined attributes may also be used.

Note: The list of state specs will be matched against in the order that they appear in the XML file. For this reason, more-specific items should be placed earlier in the file. An item with no state spec is considered to match any set of states and is generally useful as a final item to be used as a default.

If an item with no state spec is placed before other items, those items will be ignored.

Item attributes

Each item must define an android:color attribute, which may be an HTML-style hex color, a reference to a color resource, or -- in API 23 and above -- a theme attribute that resolves to a color.

Starting with API 23, items may optionally define an android:alpha attribute to modify the base color's opacity. This attribute takes a either floating-point value between 0 and 1 or a theme attribute that resolves as such. The item's overall color is calculated by multiplying by the base color's alpha channel by the alpha value. For example, the following item represents the theme's accent color at 50% opacity:

 <item android:state_enabled="false"
         android:color="?android:attr/colorAccent"
         android:alpha="0.5" />
 

Developer guide

For more information, see the guide to Color State List Resource.

Summary

XML attributes

android:alpha Alpha multiplier applied to the base color. 
android:color Base color for this state. 

Inherited constants

From interface android.os.Parcelable

Fields

public static final Creator<ColorStateList> CREATOR

Public constructors

ColorStateList(int[][] states, int[] colors)

Creates a ColorStateList that returns the specified mapping from states to colors.

Public methods

static ColorStateList createFromXml(Resources r, XmlPullParser parser)

This method was deprecated in API level 23. Use #createFromXml(Resources, XmlPullParser parser, Theme)

static ColorStateList createFromXml(Resources r, XmlPullParser parser, Resources.Theme theme)

Creates a ColorStateList from an XML document using given a set of Resources and a Resources.Theme.

int describeContents()

Describe the kinds of special objects contained in this Parcelable instance's marshaled representation.

int getChangingConfigurations()

Returns a mask of the configuration parameters for which this color state list may change, requiring that it be re-created.

int getColorForState(int[] stateSet, int defaultColor)

Return the color associated with the given set of View states.

int getDefaultColor()

Return the default color in this ColorStateList.

boolean isOpaque()

Indicates whether this color state list is opaque, which means that every color returned from getColorForState(int[], int) has an alpha value of 255.

boolean isStateful()

Indicates whether this color state list contains at least one state spec and the first spec is not empty (e.g.

String toString()

Returns a string representation of the object.

static ColorStateList valueOf(int color)
ColorStateList withAlpha(int alpha)

Creates a new ColorStateList that has the same states and colors as this one but where each color has the specified alpha value (0-255).

void writeToParcel(Parcel dest, int flags)

Flatten this object in to a Parcel.

Inherited methods

From class java.lang.Object
From interface android.os.Parcelable

XML attributes

android:alpha

Alpha multiplier applied to the base color.

May be a floating point value, such as "1.2".

android:color

Base color for this state.

May be a color value, in the form of "#rgb", "#argb", "#rrggbb", or "#aarrggbb".

Fields

CREATOR

added in API level 1
Creator<ColorStateList> CREATOR

Public constructors

ColorStateList

added in API level 1
ColorStateList (int[][] states, 
                int[] colors)

Creates a ColorStateList that returns the specified mapping from states to colors.

Parameters
states int

colors int

Public methods

createFromXml

added in API level 1
ColorStateList createFromXml (Resources r, 
                XmlPullParser parser)

This method was deprecated in API level 23.
Use #createFromXml(Resources, XmlPullParser parser, Theme)

Creates a ColorStateList from an XML document.

Parameters
r Resources: Resources against which the ColorStateList should be inflated.

parser XmlPullParser: Parser for the XML document defining the ColorStateList.

Returns
ColorStateList A new color state list.

This value will never be null.

Throws
XmlPullParserException
IOException

createFromXml

added in API level 23
ColorStateList createFromXml (Resources r, 
                XmlPullParser parser, 
                Resources.Theme theme)

Creates a ColorStateList from an XML document using given a set of Resources and a Resources.Theme.

Parameters
r Resources: Resources against which the ColorStateList should be inflated.

This value must never be null.

parser XmlPullParser: Parser for the XML document defining the ColorStateList.

This value must never be null.

theme Resources.Theme: Optional theme to apply to the color state list, may be null.

Returns
ColorStateList A new color state list.

This value will never be null.

Throws
XmlPullParserException
IOException

describeContents

added in API level 1
int describeContents ()

Describe the kinds of special objects contained in this Parcelable instance's marshaled representation. For example, if the object will include a file descriptor in the output of writeToParcel(Parcel, int), the return value of this method must include the CONTENTS_FILE_DESCRIPTOR bit.

Returns
int a bitmask indicating the set of special object types marshaled by this Parcelable object instance.

getChangingConfigurations

added in API level 23
int getChangingConfigurations ()

Returns a mask of the configuration parameters for which this color state list may change, requiring that it be re-created.

Returns
int a mask of the changing configuration parameters, as defined by ActivityInfo

See also:

getColorForState

added in API level 1
int getColorForState (int[] stateSet, 
                int defaultColor)

Return the color associated with the given set of View states.

Parameters
stateSet int: an array of View states

This value may be null.

defaultColor int: the color to return if there's no matching state spec in this ColorStateList that matches the stateSet.

Returns
int the color associated with that set of states in this ColorStateList.

getDefaultColor

added in API level 1
int getDefaultColor ()

Return the default color in this ColorStateList.

Returns
int the default color in this ColorStateList.

isOpaque

added in API level 21
boolean isOpaque ()

Indicates whether this color state list is opaque, which means that every color returned from getColorForState(int[], int) has an alpha value of 255.

Returns
boolean True if this color state list is opaque.

isStateful

added in API level 1
boolean isStateful ()

Indicates whether this color state list contains at least one state spec and the first spec is not empty (e.g. match-all).

Returns
boolean True if this color state list changes color based on state, false otherwise.

See also:

toString

added in API level 1
String toString ()

Returns a string representation of the object. In general, the toString method returns a string that "textually represents" this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method.

The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of:

 getClass().getName() + '@' + Integer.toHexString(hashCode())
 

Returns
String a string representation of the object.

valueOf

added in API level 1
ColorStateList valueOf (int color)

Parameters
color int

Returns
ColorStateList A ColorStateList containing a single color.

This value will never be null.

withAlpha

added in API level 1
ColorStateList withAlpha (int alpha)

Creates a new ColorStateList that has the same states and colors as this one but where each color has the specified alpha value (0-255).

Parameters
alpha int: The new alpha channel value (0-255).

Returns
ColorStateList A new color state list.

This value will never be null.

writeToParcel

added in API level 1
void writeToParcel (Parcel dest, 
                int flags)

Flatten this object in to a Parcel.

Parameters
dest Parcel: The Parcel in which the object should be written.

flags int: Additional flags about how the object should be written. May be 0 or PARCELABLE_WRITE_RETURN_VALUE.

This site uses cookies to store your preferences for site-specific language and display options.

Get the latest Android developer news and tips that will help you find success on Google Play.

* Required Fields

Hooray!

Browse this site in ?

You requested a page in , but your language preference for this site is .

Would you like to change your language preference and browse this site in ? If you want to change your language preference later, use the language menu at the bottom of each page.

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.

Take a short survey?
Help us improve the Android developer experience.
(Sep 2017 survey)