Recurso da lista de estados de cor
Mantenha tudo organizado com as coleções
Salve e categorize o conteúdo com base nas suas preferências.
Uma ColorStateList
é um objeto que você pode definir em XML e usar como uma cor que muda de tonalidade, dependendo do
estado do objeto View
em que ele
é usado. Por exemplo, um widget Button
pode existir em um de vários estados: pressionado, focado ou nenhum dos dois. Usando uma lista de estados de cor,
é possível fornecer uma cor diferente para cada estado.
Descreva uma lista de estados em um arquivo XML. Cada cor é definida em um elemento <item>
dentro de um elemento <selector>
único. Cada <item>
usa vários atributos para descrever o estado em que é usado.
Durante cada mudança, a lista de estados é percorrida de cima abaixo, e o primeiro item que
corresponde ao estado atual é usado. A seleção não se baseia na "melhor"
correspondência, mas no primeiro item que atende aos critérios mínimos do estado.
Observação: se você quiser fornecer um recurso de cor estática, use um
valor color simples.
- Localização do arquivo:
res/color/filename.xml
O nome do arquivo é usado como ID de recurso.
- Tipo de dados do recurso compilado:
- Ponteiro do recurso para uma
ColorStateList
.
- Referência de recurso:
-
Em Java:
R.color.filename
Em XML: @[package:]color/filename
- sintaxe:
-
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:color="hex_color"
android:lStar="floating_point_value"
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>
- elementos:
-
<selector>
- Obrigatório. Esse é o elemento raiz. Contém um ou mais elementos
<item>
.
Atributos:
xmlns:android
- String. Obrigatório. Define o namespace XML, que é
"http://schemas.android.com/apk/res/android"
.
<item>
- Define a cor usada durante certos estados, conforme descrito pelos atributos correspondentes. Ele é
filho de um elemento
<selector>
.
Atributos:
android:color
- Cor hexadecimal. Obrigatório. A cor é especificada com um
valor RGB e um canal alfa opcional.
O valor sempre começa com um caractere cerquilha (#
) seguido pela
informação Alpha-Red-Green-Blue em um dos formatos abaixo:
- #RGB
- #ARGB
- #RRGGBB
- #AARRGGBB
android:lStar
- Ponto flutuante. Opcional. Esse atributo modifica a luminância perceptível da cor base. Ele usa um
valor de ponto flutuante entre 0 e 100 ou um atributo de tema que é resolvido dessa forma. A cor
geral do item é calculada convertendo a cor da base em um espaço de cores adequado para acessibilidade
e definindo L* como o valor especificado no atributo
lStar
.
Exemplo: android:lStar="50"
android:state_pressed
- Booleano.
"true"
, se o item é usado quando o objeto é tocado, por exemplo, quando um botão
é tocado ou clicado. "false"
, se o item é usado no estado padrão não tocado.
android:state_focused
- Booleano.
"true"
, se o item é usado quando o objeto está em foco, por exemplo, quando um botão
é destacado usando o trackball ou botão direcional. "false"
, se o item é usado no estado
padrão sem foco.
android:state_selected
- Booleano.
"true"
, se o item é usado quando o objeto é selecionado, por exemplo, quando uma
guia é aberta. "false"
, se o item é usado quando o objeto não está selecionado.
android:state_checkable
- Booleano.
"true"
, se o item é usado quando o objeto pode ser marcado. "false"
, se o
item é usado quando o objeto não pode ser marcado. Essa função é útil somente quando o objeto pode fazer a
transição entre um widget selecionável e não selecionável.
android:state_checked
- Booleano.
"true"
, se o item é usado quando o objeto está marcado. "false"
, se o
item é usado quando o objeto está desmarcado.
android:state_enabled
- Booleano.
"true"
, se o item é usado quando o objeto está ativado e pode
receber eventos de toque ou clique. "false"
, se o item é usado quando o objeto está desativado.
android:state_window_focused
- Booleano.
"true"
, se o item é usado quando a janela do aplicativo está em foco,
ou seja,
quando o aplicativo está em primeiro plano. "false"
, se o item é usado quando a janela
do aplicativo não está em foco, por exemplo, quando a aba de notificações está suspensa ou uma caixa de diálogo é exibida.
Observação: o primeiro item na lista de estados que
corresponder ao estado atual do objeto será usado. Portanto, se o primeiro item na lista não tiver
nenhum dos atributos de estado acima, ele será usado sempre. Por esse motivo, coloque o
valor padrão por último, conforme mostrado no exemplo a seguir.
- Exemplo:
- Arquivo XML salvo em
res/color/button_text.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>
O XML de layout a seguir aplica a lista de cores a uma View
:
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/button_text"
android:textColor="@color/button_text" />
- Confira também:
-
O conteúdo e os exemplos de código nesta página estão sujeitos às licenças descritas na Licença de conteúdo. Java e OpenJDK são marcas registradas da Oracle e/ou suas afiliadas.
Última atualização 2025-07-27 UTC.
[null,null,["Última atualização 2025-07-27 UTC."],[],[],null,["# Color state list resource\n\nA [ColorStateList](/reference/android/content/res/ColorStateList)\nis an object you can define in XML and apply as a color that actually changes colors depending on\nthe state of the [View](/reference/android/view/View) object it is\napplied to. For example, a [Button](/reference/android/widget/Button)\nwidget can exist in one of several states: pressed, focused, or neither. Using a color state list,\nyou can provide a different color for each state.\n\nYou describe the state list in an XML file. Each color is defined in an `\u003citem\u003e` element inside a single `\u003cselector\u003e` element. Each `\u003citem\u003e`\nuses various attributes to describe the state in which it is used.\n\nDuring each state change, the state list is traversed top to bottom, and the first item that\nmatches the current state is used. The selection is *isn't* based on the \"best\"\nmatch, but rather the first item that meets the minimum criteria of the state.\n\n**Note:** If you want to provide a static color resource, use a\nsimple [color](/guide/topics/resources/more-resources#Color) value.\n\nfile location:\n: `res/color/`*filename*`.xml` \n\n The filename is used as the resource ID.\n\ncompiled resource datatype:\n: Resource pointer to a [ColorStateList](/reference/android/content/res/ColorStateList)\n\nresource reference:\n:\n In Java: `R.color.`*filename* \n\n In XML: `@[`*package* `:]color/`*filename*\n\nsyntax:\n:\n\n ```xml\n \u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n \u003cselector xmlns:android=\"http://schemas.android.com/apk/res/android\" \u003e\n \u003citem\n android:color=\"hex_color\"\n android:lStar=\"floating_point_value\"\n android:state_pressed=[\"true\" | \"false\"]\n android:state_focused=[\"true\" | \"false\"]\n android:state_selected=[\"true\" | \"false\"]\n android:state_checkable=[\"true\" | \"false\"]\n android:state_checked=[\"true\" | \"false\"]\n android:state_enabled=[\"true\" | \"false\"]\n android:state_window_focused=[\"true\" | \"false\"] /\u003e\n \u003c/selector\u003e\n ```\n\nelements:\n:\n\n `\u003cselector\u003e`\n : **Required.** This is the root element. Contains one or more `\u003citem\u003e` elements.\n\n Attributes:\n\n `xmlns:android`\n : *String* . **Required.** Defines the XML namespace, which is\n `\"http://schemas.android.com/apk/res/android\"`.\n\n `\u003citem\u003e`\n : Defines a color to use during certain states, as described by its attributes. It is a\n child of a `\u003cselector\u003e` element.\n\n Attributes:\n\n `android:color`\n : *Hexadeximal color* . **Required** . The color is specified with an\n RGB value and optional alpha channel.\n\n The value always begins with a pound (`#`) character, followed by the\n Alpha-Red-Green-Blue information in one of the following formats:\n\n - #*RGB*\n - #*ARGB*\n - #*RRGGBB*\n - #*AARRGGBB*\n\n `android:lStar`\n : *Floating point* . **Optional** . This attribute modifies the base color's perceptual luminance. It takes either a\n floating-point value between 0 and 100 or a theme attribute that resolves as such. The item's\n overall color is calculated by converting the base color to an accessibility friendly color space\n and setting its L\\* to the value specified on the `lStar` attribute.\n\n Example: `android:lStar=\"50\"`\n\n `android:state_pressed`\n : *Boolean* . `\"true\"` if this item is used when the object is tapped, such as when a button\n is touched or clicked. It's `\"false\"` if this item is used in the default, non-tapped state.\n\n `android:state_focused`\n : *Boolean* . `\"true\"` if this item is used when the object is focused, such as when a button\n is highlighted using the trackball or D-pad. It's `\"false\"` if this item is used in the default,\n non-focused state.\n\n `android:state_selected`\n : *Boolean* . `\"true\"` if this item is used when the object is selected, such as when a\n tab is opened. It's `\"false\"` if this item it used when the object isn't selected.\n\n `android:state_checkable`\n : *Boolean* . `\"true\"` if this item is used when the object is checkable. It's `\"false\"` if this\n item is used when the object isn't checkable. Only useful if the object can\n transition between a checkable and non-checkable widget.\n\n `android:state_checked`\n : *Boolean* . `\"true\"` if this item is used when the object is checked. It's `\"false\"` if it\n is used when the object is deselected.\n\n `android:state_enabled`\n : *Boolean* . `\"true\"` if this item is used when the object is enabled, capable of\n receiving touch or click events. It's `\"false\"` if it is used when the object is disabled.\n\n `android:state_window_focused`\n : *Boolean* . `\"true\"` if this item is used when the application window has focus,\n meaning the\n application is in the foreground. It's `\"false\"` if this item is used when the application\n window doesn't have focus, such as if the notification shade is pulled down or a dialog appears.\n\n **Note:** The first item in the state list that\n matches the current state of the object is applied. So, if the first item in the list contains\n none of the preceding state attributes, then it applies every time. For this reason, place your\n default value last, as shown in the following example.\n\n\nexample:\n : XML file saved at `res/color/button_text.xml`: \n\n ```xml\n \u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n \u003cselector xmlns:android=\"http://schemas.android.com/apk/res/android\"\u003e\n \u003citem android:state_pressed=\"true\"\n android:color=\"#ffff0000\"/\u003e \u003c!-- pressed --\u003e\n \u003citem android:state_focused=\"true\"\n android:color=\"#ff0000ff\"/\u003e \u003c!-- focused --\u003e\n \u003citem android:color=\"#ff000000\"/\u003e \u003c!-- default --\u003e\n \u003c/selector\u003e\n ```\n\n\n The following layout XML applies the color list to a `View`:\n\n ```xml\n \u003cButton\n android:layout_width=\"fill_parent\"\n android:layout_height=\"wrap_content\"\n android:text=\"@string/button_text\"\n android:textColor=\"@color/button_text\" /\u003e\n ```\n\nsee also:\n:\n - [Color (simple value)](/guide/topics/resources/more-resources#Color)\n - [ColorStateList](/reference/android/content/res/ColorStateList)\n - [State list drawable](/guide/topics/resources/drawable-resource#StateList)"]]