O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Recurso da lista de estados de cor

Um ColorStateList é um objeto que você pode definir em XML que pode ser aplicado como uma cor, mas que mudará de cor, dependendo do estado do objeto View em que é aplicado. Por exemplo, um widget Button pode existir em um dos vários estados diferentes (pressionado, focado ou nenhum) e, usando uma lista de cores, você pode fornecer uma cor diferente durante cada estado.

Você pode descrever uma lista de estado 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 deve ser usado.

Durante cada mudança de estado, a lista de estados é percorrida de cima para baixo, e o primeiro item que corresponde ao estado atual será usado. A seleção não se baseia na "melhor correspondência", mas simplesmente no primeiro item que atenda aos critérios mínimos do estado.

Observação: se você quiser fornecer um recurso de cor estática, use um valor de Cor simples.

localização do arquivo:
res/color/filename.xml
O nome do arquivo será usado como o ID do recurso.
tipo de dados do recurso compilado:
Ponteiro de 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: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. Precisa ser o elemento raiz. Contém um ou mais elementos <item>.

atributos:

xmlns:android
String. Obrigatório. Define o namespace XML, que precisa ser "http://schemas.android.com/apk/res/android".
<item>
Define a cor usada durante certos estados, como descrito pelos atributos correspondentes. Precisa ser um 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 seguintes formatos:

  • #RGB
  • #ARGB
  • #RRGGBB
  • #AARRGGBB
android:state_pressed
Booleano. "True" se este item precisa ser usado quando o objeto é pressionado, por exemplo, quando um botão é pressionado ou clicado. "False" se este item precisa ser usado no estado padrão, não pressionado.
android:state_focused
Booleano. "True" se este item precisa ser usado quando um objeto está em foco, por exemplo, quando um botão é destacado usando o trackball/botão direcional. "False" se este item for usado no estado padrão, sem foco.
android:state_selected
Booleano. "True" se este item precisa ser usado quando o objeto é selecionado, por exemplo, quando uma guia é aberta. "False" se este item precisa ser usado quando o objeto não está selecionado.
android:state_checkable
Booleano. "True" se este item precisa ser usado quando o objeto pode ser selecionado, "false" se este item precisa ser usado quando o objeto não pode ser selecionado. Esta função é útil somente se o objeto puder fazer a transição entre um widget selecionável e não selecionável.
android:state_checked
Booleano. "True" se este item precisa ser usado quando o objeto estiver marcado; "false" se ele precisa ser usado quando objeto estiver desmarcado.
android:state_enabled
Booleano. "True" se este item precisa ser usado quando o objeto é ativado (capaz de receber eventos de toque ou clique); "false" se ele precisa ser usado quando o objeto está desativado.
android:state_window_focused
Booleano. "True" se este item precisa ser usado quando a janela do aplicativo estiver em foco (o aplicativo está em primeiro plano). "False" se este item precisa ser usado quando a janela do aplicativo não tiver foco, por exemplo, se uma aba de notificações está suspensa ou uma caixa de diálogo for exibida.

Observação: o primeiro item na lista de estados que corresponde ao estado atual do objeto será aplicado. Portanto, se o primeiro item na lista não contiver nenhum dos atributos de estados acima, ele será aplicado sempre, motivo pelo qual seu valor padrão precisa sempre ser o último, como demonstrado 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>
    

Este XML de layout aplicará a lista de cores a uma visualização:

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/button_text"
        android:textColor="@color/button_text" />
    
veja também: