2011-07-19 11 views
44

En el código dado lbl [0] .getTextColor() da Error pero no sé cómo obtener el color del texto de la vista de texto en el archivo java, por favor, ayúdenme.cómo obtener el color del texto de la vista de texto?

public void angry(View v) 
{ 
    if (lbl[0].getTextColor() == Color.BLACK) 
     lbl[0].setTextColor(Color.RED); 
    if (lbl[0].getTextColor() == Color.RED) 
     lbl[0].setTextColor(Color.BLACK); 
} 

Gracias.

Respuesta

119

Utilice esta

textView.getCurrentTextColor()

+0

bien Gracias JeffG –

7

Hay una cosa importante recordar: getCurrentTextColor(), así como métodos similares como getCurrentHintTextColor() y getHighlightColor() valor de retorno int no hexagonal utilizado principalmente para definir los colores. Eso podría ser aún más confuso ya que este es un número negativo, por ejemplo, para el rojo es -65536, para el verde -16711936 y para el blanco -1.

Para que sea más sencillo esto se debe a getCurrentTextColor() devuelve la diferencia entre el color actual y valor de color blanco (tanto en decimal) menos 1. La expresión es: CurrentColor- (WhiteColor + 1), donde el blanco es 16777215. Por supuesto, para colores estándar puede usar constantes predefinidas como Color.GREEN o Color.MAGENTA, pero sabiendo que puede usar efectivamente getCurrentTextColor() para cualquier color.

Usted puede leer más acerca de establecer y obtener colores en Android en http://android4beginners.com/2013/07/lesson-1-3-how-to-change-a-color-of-text-and-background-in-textview/

+9

innecesariamente confuso. 'getCurrentTextColor()' devuelve el valor de color que resulta ser un entero, almacenado en 32 bytes. 4 grupos de 8 bytes. No es hexadecimal ni decrece hasta que lo convierte en una cadena y no necesita hacer ningún cálculo con el valor en blanco. – Tomasz

0

Si está utilizando la biblioteca contextcompat para establecer el color para las nuevas versiones de Android, es posible obtener un valor poquitito diferente a lo que estaba por encima . Esta prueba funcionó para mí cuando estaba usando lo siguiente para establecer el color de prueba

view.setTextColor (ContextCompat.getColor (ctx, color));

textColor =view.getCurrentTextColor(); 
    CoreApp.debug("viewutils", "green color: "+textColor); 
    assertThat(textColor, is(ContextCompat.getColor(mCtx, R.color.green))); 
Cuestiones relacionadas