2010-09-08 25 views
53

En el archivo string.xml utilizo la siguiente etiqueta¿Cómo establecer el color de un TextView en Android?

<color name="mycolor1">#F5DC49</color> 

Si uso

textview1.setTextColor(Color.CYAN); 

funciona, pero

textview1.setTextColor(R.color.mycolor1); 

no está funcionando.

¿Cómo puedo usar el color definido en el archivo XML?

Respuesta

79

TextView.setTextColor() toma una int que representa el color (por ejemplo, 0xFFF5DC49) y no el ID de recurso del archivo xml. En una actividad, puede hacer algo como:

textView1.setTextColor(getResources().getColor(R.color.mycolor)) 

fuera de una actividad que necesita un Context por ejemplo.

textView1.setTextColor(context.getResources().getColor(R.color.mycolor)) 
20
textView1.setTextColor(Color.parseColor("#F5DC49")); 

sin recursos

12

context.getResources().getColor está en desuso.

Es necesario utilizar ContextCompat.getColor(), que forma parte de la Biblioteca Soporte V4 (por lo que funciona para toda la API anterior).

ContextCompat.getColor(context, R.color.my_color); 

Usted tendrá que añadir la biblioteca de soporte V4 añadiendo lo siguiente a la matriz dependencies dentro de su aplicación build.gradle:

compile 'com.android.support:support-v4:23.0.1' # or any version above 

Si se preocupan por la tematización, la documentación especifica que el método utilizará el tema del contexto:

a partir de M, el color devuelto será de estilo para el tema especificado de contexto

Cuestiones relacionadas