setHintTextColor () en EditText


88

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

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

Por ejemplo, actualmente, si tengo color rojo en el cuadro de texto y el usuario selecciona el color verde, el texto aparece en color verde. Pero si elimino ese texto, el texto de la sugerencia aparecerá en rojo incluso si cambio el color de la sugerencia en el código. Este problema solo surge cuando hay algún texto allí. si está en blanco y hay texto de sugerencia, entonces el problema no vendrá.


Respuestas:


56

Use esto para cambiar el color de la pista. -

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 respondió a continuación.
zeeshan

8
porque esa solución no está resolviendo su problema?
evaristokbza

318

Simplemente agregue esto en su layoutpara EditText:

android: textColorHint = "# FFFFFF"


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

5
Lea atentamente la pregunta. el autor no ha preguntado de manera apropiada.
Anand Chavan

22

Colores predeterminados:

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

Para código de color:

android:textColorHint="#33b5e5"

no tome 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 cuando sea necesario, como lo que hace o el problema que enfrenta el OP, etc. :)
Sufian

15

Dentro del archivo XML de diseño podemos cambiar el color de la pista .....

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

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


7

Parece que EditText aplica hintTextColor solo si el texto está vacío. Tan simple solución será así

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

Si tiene varios campos, puede extender EditText y escribir un método que ejecute esta lógica y usar ese método en su lugar.


6

Programáticamente en Java: al menos API v14 +

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


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

2

Este es como el color de sugerencia predeterminado, funcionó para mí:

editText.setHintTextColor(Color.GRAY);


0

Puede llamar editText.invalidate()después de restablecer el color de la pista. Eso podría resolver su problema. En realidad, el SDK actualiza el color de la misma forma.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.