2011-07-13 16 views
47

Necesito cambiar el color del texto cuando el cambio de estado (presionado, el enfoque) ...Cómo establecer TextColor usando SetTextColor (colores) ColorsStateList

Cómo establecer el color del texto de un TextView usando ColorsStateList?

edición, resuelto:

textView.setTextColor (new ColorStateList (
    new int [] [] { 
     new int [] {android.R.attr.state_pressed}, 
     new int [] {android.R.attr.state_focused}, 
     new int [] {} 
    }, 
    new int [] { 
     Color.rgb (255, 128, 192), 
     Color.rgb (100, 200, 192), 
     Color.White 
    } 
)); 

Change Background Color of TextView on Click

+0

¿Leyó usted? http://stackoverflow.com/questions/3506319/android-linearlayout-with-color-resource-what-am-i-doing-wrong –

+0

Su pregunta es ambiguos- simplemente está buscando un tutorial sobre el uso de ColorStateList? ¿Has buscado por todos lados? http://stackoverflow.com/questions/3827416/how-to-define-colorstatelist-for-textview –

+0

Sí, pero no puedo usar XML. Necesito hacer esto programáticamente – Rodrigo

Respuesta

73

Si es necesario configurar los colores en el código (usando ColorStateList), pero todavía quiere mantener los estados de color en un XML, es posible que desee utilizar esta:

try { 
    XmlResourceParser parser = getResources().getXml(R.color.your_colors); 
    ColorStateList colors = ColorStateList.createFromXml(getResources(), parser); 
    mText.setTextColor(colors); 
} catch (Exception e) { 
    // handle exceptions 
} 

res/color/your_colors.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="#222222"/> 
    <item android:state_selected="true" 
      android:color="#222222"/> 
    <item android:state_focused="true" 
      android:color="#222222"/> 
    <item android:color="#0000ff"/> 
</selector> 
+97

Hay una manera mucho más simple de lograr esto: 'mText.setTextColor (getResources(). GetColorStateList (R.color.your_colors));' –

+0

@ol_v_er no parece para retener los estados de color si lo configuraste de esa manera (al menos no era para mí). Tuve que usar el método anterior para conservar el estado de color seleccionado, etc. –

+0

¿Cuándo no retiene los estados de color? Cuando se produce un cambio de configuración? –

27

usted tiene que utilizar getColorStateList()

también estaba luchando con este problema, si desea utilizar un state list, es necesario que lo declaró en la carpeta color recursos, en lugar de la carpeta drawable, y el uso de la setTextColor(getResources().getColorStateList(R.color.your_colors)).

+0

Esta fue la solución para mí Estudio Android 2.3 se muestra muy. comportamiento incoherente con el selector en la carpeta 'drawable'. A veces funcionaría, a veces se confundiría y simplemente colorearía todo el texto en rosa. Al agregar una carpeta de recursos de 'color' y poner el archivo XML selector allí, todo salió bien . –

3

también se puede utilizar para cargar ContextCompat una lista estado de color

ColorStateList colors = ContextCompat.getColorStateList(this,R.color.my_color_list);
Cuestiones relacionadas