Necesito un EditText
que 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 envuelvaEditText
o lo agregue. Ver github.com/rengwuxian/MaterialEditText .Respuestas:
No es necesario usar una biblioteca de terceros ya que Google introdujo el
TextInputLayout
como 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
EditText
simplemente necesita llamar#setError
alTextInputLayout
(NO al niñoEditText
):Resultado
Para ocultar el error y restablecer el tinte, simplemente llame
til.setError(null)
.Nota
Para usar el
TextInputLayout
debe agregar lo siguiente a susbuild.gradle
dependencias:Establecer un color personalizado
Por defecto, la línea de
EditText
será roja. Si necesita mostrar un color diferente, puede usar el siguiente código tan pronto como llamesetError
.Para borrarlo, simplemente llame a la
clearColorFilter
función, así:fuente
textInputLayout.setError("Error messsage")
al color delEditText
deberí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
EditText
debe estar envuelto en unTextInputLayout
Para obtener un mensaje de error como lo desea, establezca el error en
TextInputLayout
Debe 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