EditText setError () ohne Nachricht nur das Icon

Derzeit habe ich einen wirklich einfachen Code, der EditText Felder validiert und wenn der Benutzer den Button am Ende trifft, prüft er sie. Es wird Fehler in allen Bereichen mit diesem:

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

Mein Problem, dass die Tastatur wird Popup und wird die Fehler-Blase zu einem zufälligen Ort zu bewegen. Ich hatte gehofft, keine EditText mit einer Nachricht zu haben, sondern die Fehler-Icons in ungültigen EditText Feldern zu EditText . Ich habe versucht, setError(null) aber das funktioniert nicht. Irgendwelche Ideen?

  • EditText Klartext auf den ersten Fokus - Android
  • Android: Bearbeiten Sie Text- oder Textansicht-ID programmgesteuert
  • Android, wie man EditText in einem ListView editierbar macht
  • Edittext Android-Schwerpunkt
  • So wählen Sie die nächste und vorherige Texte in einer Ansicht aus
  • Android Lange Presse auf Edit Text Verhalten
  • Android Edit Text Cursor wird nicht angezeigt
  • Wie kann ich den Fokus (und die Tastatur) auf meinem EditText programmgesteuert einstellen
  • 5 Solutions collect form web for “EditText setError () ohne Nachricht nur das Icon”

    Ihr Code perfekt, um nur Symbol zu zeigen.

    Als EditText zeigt alles, was im Zusammenhang mit dem Fokus liegt. Also ändere einfach deinen Code, um das zu mögen …

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

    Sie können verwenden

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

    Um das Fehlersymbol rechts neben der Texteingabe festzulegen. Sie müssen sich auch registrieren müssen

    View.OnKeyListener , um das Fehlersymbol bei Benutzereingaben zurückzusetzen:

     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; } }); } 

    Das funktioniert für mich. Jetzt bekommen Fehlermeldungen Pop-up öffnen.

     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 öffnete auch wenn mein Fokus auf password editText , wird es umgeleitet, um email editText zu email editText .

    Erstellen Sie einfach Ihre eigenen Edittext und überschreiben 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); } } 

    Und dann wo immer du willst et.setError ("", drawableToShow);

    Sie können meine benutzerdefinierte Lösung für Popups verwenden. In diesem Fall ist Popup unabhängig vom EditText-Fokuszustand. Darüber hinaus ist es mit mehreren EditTexts verwendbar. https://plus.google.com/+AlexanderZaitsevDev/posts/W9XcZNZrsMB

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.