2011-02-06 15 views
6

Estoy trabajando en un proyecto de Android usando Eclipse. Quiero cambiar el color de fondo de un TextView usando uno de los colores que he definido en res/values ​​/ colors.xml. Estos colores están todos disponibles usando R.color.color_name.¿Cómo cambiar el color de fondo de un TextView con un color definido en mi archivo values ​​/ colors.xml?

Mi problema es que esto simplemente no funcionará. Cambiar a uno de mis colores definidos siempre deja el fondo del TextView configurado en su color predeterminado, en este caso, negro. Si utilizo uno de los colores integrados de Java, funciona bien. Estoy pensando que es un problema de definición de color, algo que implica cómo realmente defino mis colores en mi XML, pero no estoy seguro.

// This works: 
weight1.setBackgroundColor(Color.BLACK); 

// This does not work: 
weight2.setBackgroundColor(R.color.darkgrey); 

// Color Definition: (this is in a separate xml file, not in my Java code) 
<color name = "darkgrey">#A9A9A9</color> 

Respuesta

11

No está funcionando debido a que está configurando el color de fondo a la clave (que es un valor hexadecimal como 0x7f050008) en lugar de su valor. Para utilizar su valor, intentan:

weight2.setBackgroundColor(getResources().getColor(R.color.darkgrey)); 
+1

eso es exactamente él, gracias! –

+0

getResources(). GetColor (int) está en desuso. Use setBackgroundResource (int) en su lugar. – CoolMind

20

En realidad es aún más fácil con esto:

weight2.setBackgroundResource(R.color.darkgrey); 
Cuestiones relacionadas