EditText setError () sin mensaje solo el icono

Actualmente tengo un código muy simple que valida los campos EditText y cuando el usuario pulsa el botón al final, los comprueba. Se pondrán errores en todos los campos con esto:

 if (!emailmatcher.matches()) { email.setError("Invalid Email"); } if (!zipmatcher.matches()) { zipcode.setError("Invalid ZipCode"); } 

Mi problema es que el teclado se abrirá y moverá la burbuja de error a un lugar aleatorio. Esperaba no tener un error de burbujas con un mensaje, pero mantener los iconos de error en campos EditText no EditText . Traté de introducir setError(null) pero eso no funciona. ¿Algunas ideas?

Tu código es perfecto para mostrar solo el icono.

Como EditText se muestra nada relacionado con cuando se ha centrado. Así que cambia tu código para que así …

 if (!emailmatcher.matches()) { email.requestFocus(); email.setError("Invalid Email"); } if (!zipmatcher.matches()) { zipcode.requestFocus(); zipcode.setError("Invalid ZipCode"); } 

Puedes usar

setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.my_error_icon, 0);

Para configurar el icono de error a la derecha de la entrada de texto. También puede tener que registrarse

View.OnKeyListener para restablecer el icono de error en la entrada del usuario:

 EditText myEdit = (EditText)findViewById(R.id.my_edit); if (TextUtils.isEmpty(myEdit.getText().toString())) { // set the warning myEdit.requestFocus(); // show error icon myEdit.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.error_sign, 0); // remove the error icon on key press myEdit.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { EditText eText = (EditText)v; // remove error sign eText.setCompoundDrawablesWithIntrinsicBounds(0, 0, 0, 0); // remove this key handler eText.setOnKeyListener(null); return false; } }); } 

Esto funciona para mí. Ahora los mensajes de error se abren.

 public boolean isValid() { String email = ediTextEmail.getText().toString(); String password = ediTextPassword.getText().toString(); if (TextUtils.isEmpty(email)) { ediTextEmail.requestFocus(); ediTextEmail.setError("Email cannot be blank"); return false; } if (!isEmailValid(email)) { ediTextEmail.requestFocus(); ediTextEmail.setError("Enter a valid email id"); return false; } if (TextUtils.isEmpty(password)) { ediTextPassword.requestFocus(); ediTextPassword.setError("Password cannot be blank"); return false; } mEmail = email; mPassword = password; return true; } 

Pop abierto incluso si mi foco está en la password editText , será redirigido al email editText .

Simplemente cree su propio edittext y anule setError

  public class MyEditText extends EditText { public MyEditText(Context context, AttributeSet attrs) { super(context, attrs); } @Override public void setError(CharSequence error, Drawable icon) { setCompoundDrawables(null, null, icon, null); } } 

Y luego usar donde quieras et.setError ("", drawableToShow);

Puede utilizar mi solución personalizada para ventanas emergentes. En este caso, el popup es independiente del estado de enfoque de EditText. Además, es utilizable con múltiples EditTexts. https://plus.google.com/+AlexanderZaitsevDev/posts/W9XcZNZrsMB

  • Android - Quiere restringir algunos charaters al edittext
  • Android EditText en AlertDialog parece demasiado amplio
  • Etiqueta flotante con dos editText
  • Android EditText no muestra el teclado
  • Deshabilitar el menú contextual de EditText
  • más de un edittext en android
  • Resaltar texto en varios controles EditText simultáneamente
  • Estilo de fuente de sugerencia diferente y escrito en estilo de fuente de texto android
  • Mostrar un cuadro de texto de edición al hacer clic en un botón
  • ¿Cómo puedo hacer que mi EditText cinco líneas de alto sin utilizar Android: inputType = "textMultiLine"?
  • Modificar estilos para EditText en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.