¿El color del error TextInputLayout no se borra?

Tengo un TextInputLayout con un EditText dentro de él.

Este es mi xml:

<android.support.design.widget.TextInputLayout android:id="@+id/textInputLayout" android:layout_width="match_parent" android:layout_height="wrap_content"> <EditText android:id="@+id/editText" android:layout_width="wrap_content" android:layout_height="wrap_content" android:hint="Enter Text" /> </android.support.design.widget.TextInputLayout> 

Mi código java:

 ((TextInputLayout) findViewById(R.id.textInputLayout)).setError("ERROR"); 

Cuando llamo a setError ("ERROR") , el color de la etiqueta (pista) y el color de la línea inferior de EditText cambia a rojo y aparece el error. Este es el comportamiento que espero.

Ahora digamos que no llamo setError (null) antes de destruir mi actividad. Ahora abro la misma actividad otra vez. Puedo ver que la línea inferior sigue siendo roja para todos los campos de EditText dentro de mi uso, aunque el color de la etiqueta parece ser reajustado y el mensaje de error se rechaza. Esto no siempre es reproducible, pero si sigo intentándolo, finalmente puedo conseguirlo.

Estoy usando un Nexus 4 con 5.1.1.

¿Estoy haciendo algo mal?

Esto se debe a un error en la biblioteca AppCompat .

  • Issue 190829: TextInputLayout setError hace que todos los TIL de la aplicación tengan subrayado rojo

Reportado por elyess.a … @ gmail.com, 19 de octubre de 2015 Uso de la biblioteca de soporte de diseño 23.1.0

Pasos para reproducir el problema (incluido el código de ejemplo, si procede).

  • SetError en un TIL (es decir, en un formulario)
  • El TIL tiene un subrayado rojo (ok)
  • Navegue hacia atrás e ingrese de nuevo la actividad. O vaya a otra actividad con TIL.

Que pasó.

  • Todos los TILs tienen un subrayado rojo, incluso en otras actividades. (Pero sin texto de error).
  • Los subrayados rojos desaparecen sólo después de cerrar la aplicación.

También se informa aquí:

  • Edición 190355: TextInputLayout setError () no mostrará un error después de que se borra

El estado del problema se cambió a FutureRelease el 11 de noviembre de 2015, por lo que podemos esperar una solución próximamente.

Mientras tanto, parece que hay 3 soluciones:

  • Compilar con v23.0.1 de la biblioteca
    • Pero que introduce un problema similar en el que la línea de error no se restablece
  • Agregar un invisible EditText a la parte superior de su diseño
  • Ejecute el siguiente código en su primer EditText
    • editText.setBackground(editText.getBackground().getConstantState().newDrawable())

Este problema se resuelve en la versión 23.1.1 de la librería com.android.support: …

Tenía el mismo problema lo que funcionaba para mí estaba cambiando mi tema para extender desde Theme.Design.* . Fuente: Edición 202051: UnsupportedOperationException en el contador de TextInputLayout

Como dijo @ Richard, es un error. Issue 190829: TextInputLayout setError hace que todos los TIL de la aplicación tengan subrayado rojo

He utilizado la solución de fijar el estado constante de nuevo al fondo. Sólo puede extender el TextInputLayout con su propia clase personalizada donde se anula el método setError ():

 public class CustomTextInputLayout extends TextInputLayout { // Constructors... @Override public void setError(@Nullable CharSequence error) { super.setError(error); if ((getEditText() != null && getEditText().getBackground() != null) && (Build.VERSION.SDK_INT == 22 || Build.VERSION.SDK_INT == 21)) { Drawable drawable = getEditText().getBackground().getConstantState().newDrawable(); getEditText().setBackgroundDrawable(drawable); } } } 

Y luego estoy reutilizando esta clase para envolver EditTexts. No experimenté efectos secundarios.

  • EditText se congela / no muestra texto al escribir
  • En Android EditText, ¿cómo forzar la escritura en mayúsculas?
  • No puedo escribir en el EditText, desaparece cuando intento escribir algo, es porque el getView () se llama cuando modifico los datos
  • ¿Cómo mostrar un cuadro de edición de texto "sobre" la pantalla?
  • OnCreateContextMenu () para EditText no funciona en dispositivos reales
  • Subrayar texto debajo de la propiedad de texto
  • Detener ScrollView de establecer el enfoque en EditText
  • Habilitación de la barra de desplazamiento en EditText Android
  • Diferencias entre textMultiLine y textLongMessage
  • Cómo hacer que el texto de edición no se edita pero se puede hacer clic en JAVA
  • Cambiar el color de línea inferior de EditText con appcompat v7
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.