Necesito un EditTextque se vea así en onError:
llamando a onError se ve así en su lugar:

Nota: la aplicación se ejecuta en SDK 19 (4.4.2)
min SDK es 1
¿Hay algún método similar a setError que lo haga automáticamente o tengo que escribir el código?
Gracias

EditText. Lo más probable es que necesite algo que lo envuelvaEditTexto lo agregue. Ver github.com/rengwuxian/MaterialEditText .Respuestas:
No es necesario usar una biblioteca de terceros ya que Google introdujo el
TextInputLayoutcomo parte de ladesign-support-library.Siguiendo un ejemplo básico:
Diseño
Nota: Al establecerlo
app:errorEnabled="true"como un atributo deTextInputLayout, no cambiará su tamaño una vez que se muestra un error, por lo que básicamente bloquea el espacio.Código
Para mostrar el error debajo del
EditTextsimplemente necesita llamar#setErroralTextInputLayout(NO al niñoEditText):Resultado
Para ocultar el error y restablecer el tinte, simplemente llame
til.setError(null).Nota
Para usar el
TextInputLayoutdebe agregar lo siguiente a susbuild.gradledependencias:Establecer un color personalizado
Por defecto, la línea de
EditTextserá roja. Si necesita mostrar un color diferente, puede usar el siguiente código tan pronto como llamesetError.Para borrarlo, simplemente llame a la
clearColorFilterfunción, así:fuente
textInputLayout.setError("Error messsage")al color delEditTextdebería volverse rojo. Para restablecerlo, es suficiente llamartextInputLayout.setError(null).editText.getBackground().setColorFilter(getResources().getColor(R.color.red_500_primary), PorterDuff.Mode.SRC_ATOP);ya no es necesario con la última biblioteca de soporteEditText, no en elTextInputLayout. Vi esta respuesta y aún no podía entender qué necesitaba cambiar. Muy fácil de perder.Llama en
myTextInputLayout.setError()lugar demyEditText.setError().Estos contenedores y contenedores tienen una doble funcionalidad en la configuración de errores. La funcionalidad que necesita es la del contenedor. Pero podría requerir una versión mínima de 23 para eso.
fuente
Tu
EditTextdebe estar envuelto en unTextInputLayoutPara obtener un mensaje de error como lo desea, establezca el error en
TextInputLayoutDebe agregar dependencia de biblioteca de soporte de diseño. Agregue esta línea en sus dependencias de gradle
fuente
La respuesta de reVerse es excelente, pero no señaló cómo eliminar el tipo de información sobre herramientas de error flotante
Tendrás
edittext.setError(null)que eliminar eso.Además, como alguien señaló, no necesitas
TextInputLayout.setErrorEnabled(true)Diseño
Código
fuente
fuente
Si alguien aún enfrenta el error al usar la biblioteca de diseño de Google como se menciona en la respuesta, use esto como lo comentó @h_k, que es:
En lugar de llamar a setError en TextInputLayout , es posible que esté usando setError en EditText .
fuente
fuente