2011-06-22 18 views
84

Tengo una Vista en la que hay dos cuadros de texto, y el usuario puede seleccionar el color del texto de otra vista en la misma pantalla (a través del cuadro de diálogo).setHintTextColor() en EditText

Así que cuando el usuario cambia de color a través del cuadro de diálogo, estoy cambiando el color del texto EditText y su pista. Pero cuando hay algún texto disponible en EditText después de que el usuario seleccione otro color, entonces ese texto viene en ese color. Pero si elimino todo ese texto, entonces el color de HintText es el del color anterior.

Por ejemplo, actualmente si tengo el color rojo en el cuadro de texto y el usuario selecciona el color verde para que el texto esté allí en color verde. Pero si elimino ese texto, el texto de sugerencia aparecerá en rojo aunque I cambie el color de sugerencia en el código. Este problema solo aparece cuando hay texto allí. si está en blanco y hay texto de sugerencia, entonces el problema no se presenta.

+1

mira esto http://stackoverflow.com/questions/25134463/edittext-unable-to-change-the-text-color/25134499#25134499 – Nabin

Respuesta

49

Utilice esto para cambiar el color de la sugerencia. -

editText.setHintTextColor(getResources().getColor(R.color.white)); 

solución para su problema -

editText.addTextChangedListener(new TextWatcher() { 
    @Override 
    public void onTextChanged(CharSequence arg0, int arg1, int arg2,int arg3){ 
     //do something 
    } 

    @Override 
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) { 
     //do something 
    } 

    @Override 
    public void afterTextChanged(Editable arg0) { 
     if(arg0.toString().length() <= 0) //check if length is equal to zero 
      tv.setHintTextColor(getResources().getColor(R.color.white)); 
    } 
}); 
+7

Por qué una solución tan complicada que se puede lograr en media línea, como anandc responde a continuación. – zeeshan

+8

porque esa solución no está solucionando su problema? – evaristokbza

317

sólo tiene que añadir esto en su layout para la EditText:

androide: textColorHint = "# FFFFFF"

+8

¿Cómo se supone que esto resolverá la pregunta de OP?la pregunta es cómo cambiar el color de la sugerencia DINÁMICAMENTE cuando EditText tiene texto y no veo cómo lo resolverá ... – evaristokbza

+5

Lea la pregunta detenidamente. el autor no ha preguntado de manera apropiada. –

+1

esta respuesta debe aceptarse como una respuesta correcta. –

15

Dentro del archivo Xml Layout podemos cambiar el color de la pista .....

android:textColorHint="@android:color/*****" 

puede reemplazar * con color o código de color.

4

mediante programación en Java - Al menos API v14 +

exampleEditText.setHintTextColor(getResources().getColor(R.color.your_color));

+1

en mi Samsung S5 apiV19 el mismo problema, como @dishan mencionó: 'setHintTextColor (color)' no funciona en caso de que haya algún texto, INCLUSO si es '" "'. –

7

Parece que EditText aplicar el hintTextColor sólo si el texto está vacío. Así solución simple será así

Editable text = mEditText.getText(); 
mEditText.setText(null); 
mEditText.setHintTextColor(color); 
mEditText.setText(text); 

Si tiene varios campos, se puede ampliar el EditarTexto y escribir un método que ejecuta esta lógica y utilizar ese método en su lugar.

2

Esto es como el color de pista por defecto, trabajó para mí:

editText.setHintTextColor(Color.GRAY);

21

colores predeterminados:

android:textColorHint="@android:color/holo_blue_dark" 

Para el código de color:

android:textColorHint="#33b5e5" 
+0

no tomes estas ediciones personalmente. La edición básicamente mejora la legibilidad de la respuesta y/o mejora la integridad de la misma. Además, si corresponde, agregue una explicación sobre el código donde sea necesario, como qué hace o qué problema enfrenta el OP, etc. :) – Sufian