Google se compromete a impulsar la igualdad racial para las comunidades afrodescendientes. Obtén información al respecto.

Recurso de lista de estados de color

Un ColorStateList es un objeto que puedes definir en formato XML y aplicar como color, pero que cambiará de color según el estado del objeto View al que se aplique. Por ejemplo, un widget Button puede existir en uno de varios estados (presionado, enfocado o ninguno) y, utilizando una lista de estados de color, puedes proporcionar un color diferente durante cada estado.

Puedes describir la lista de estados en un archivo XML. Cada color se define en un elemento <item> dentro de un único elemento <selector>. Cada <item> usa distintos atributos para describir el estado en el que debe usarse.

Durante cada cambio de estado, se recorre de arriba abajo la lista de estados, y se utilizará el primer elemento que coincida con el estado actual; la selección no depende de la "mejor coincidencia", sino del primer elemento que cumple con los criterios mínimos del estado.

Nota: Si deseas proporcionar un recurso de color estático, usa un valor simple de Color.

ubicación del archivo:
res/color/filename.xml
Se utilizará el nombre del archivo como ID de recurso.
tipo de datos de recursos compilados:
Puntero del recurso a ColorStateList.
referencia del recurso:
En Java: R.color.filename
En XML: @[package:]color/filename
sintaxis:
    <?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>
Obligatorio. Debe ser el elemento raíz. Contiene uno o más elementos <item>.

atributos:

xmlns:android
String. Obligatoria. Define el espacio de nombres en formato XML, que debe ser "http://schemas.android.com/apk/res/android".
<item>
Define un color para usar durante ciertos estados, según la descripción de sus atributos. Tiene que ser un elemento secundario de un <selector>.

atributos:

android:color
Color hexadecimal. Obligatorio. El color se especifica con un valor RGB y un canal Alfa opcional.

El valor siempre comienza con un carácter numeral (#), seguido de la información de Alfa, Rojo, Verde y Azul en uno de los siguientes formatos:

  • #RGB
  • #ARGB
  • #RRGGBB
  • #AARRGGBB
android:state_pressed
Valor booleano. Es "true" si se debe usar este elemento cuando se presiona el objeto (por ejemplo, cuando se toca o se hace clic en un botón) y "false" si se debe usar en el estado predeterminado, sin presionar.
android:state_focused
Valor booleano. Es "true" si se debe usar este elemento cuando el objeto está enfocado (como cuando se resalta un botón usando la bola de seguimiento o el pad direccional) y "false" si se debe utilizar en el estado predeterminado no enfocado.
android:state_selected
Valor booleano. Es "true" si se debe usar este elemento cuando se selecciona el objeto (como cuando se abre una pestaña) y "false" si se debe usar cuando el objeto no está seleccionado.
android:state_checkable
Valor booleano. Es "true" si se debe usar este elemento cuando el objeto es comprobable y "false" si se debe utilizar cuando el objeto no se puede marcar. (Solo es útil si el objeto puede hacer la transición entre un widget marcable y uno no marcable).
android:state_checked
Valor booleano. Es "true" si se debe usar este elemento cuando se marca el objeto y "false" si se debe usar cuando el objeto no está marcado.
android:state_enabled
Valor booleano. Es "true" si se debe usar el elemento cuando el objeto está habilitado (cuando puede recibir eventos táctiles o de clic) y "false" si se debe usar cuando el objeto está inhabilitado.
android:state_window_focused
Valor booleano. Es "true" si se debe usar este elemento cuando la ventana de la aplicación tiene foco (la aplicación está en primer plano) y "false" si se debe usar cuando la ventana de la aplicación no está enfocada (por ejemplo, si se despliega el panel de notificaciones o aparece un cuadro de diálogo).

Nota: Recuerda que se aplicará el primer elemento de la lista de estados que coincida con el estado actual del objeto. Así, si el primer elemento de la lista no contiene ninguno de los atributos de estado anteriores, se aplicará cada vez, por lo que su valor predeterminado siempre debe ser el último, como se muestra en el siguiente ejemplo.

ejemplo:
archivo XML guardado en 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 diseño XML aplicará la lista de colores a una Vista:

    <Button
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/button_text"
        android:textColor="@color/button_text" />
    
consulta también: