Design Android EditText, um Fehlermeldung zu zeigen, wie von Google beschrieben

Ich brauche einen EditText , der so aussieht onError:

Bildbeschreibung hier eingeben

Calling onError sieht wie folgt aus:

Bildbeschreibung hier eingeben

Hinweis: Die App läuft auf SDK 19 (4.4.2)

Min SDK ist 1

Gibt es eine Methode ähnlich setError, die dies automatisch macht, oder muss ich den Code dafür schreiben?

Vielen Dank

  • Android - EditText gibt IndexOutOfBounds Ausnahme bei der Verwendung von textAllCaps
  • EditText.getText (). ToString () gibt manchmal ""
  • Wie dynamisch Layout-Parameter in Android?
  • Format EditText-Ansicht für Telefonnummern
  • Wo soll ich die "ttf" -Dateien in ein Android-Projekt stellen?
  • Alternative von singleLine Attribut (veraltet) TextInputEditText
  • Android: Wie kann ich die Kennwort-Eigenschaft in einem Bearbeitungstext festlegen?
  • Wie füge ich ein EditText zu einem DialogFragment hinzu?
  • 5 Solutions collect form web for “Design Android EditText, um Fehlermeldung zu zeigen, wie von Google beschrieben”

    Es besteht keine Notwendigkeit, eine Drittanbieter-Bibliothek zu verwenden, da Google die TextInputLayout als Teil der design-support-library .

    Nach einem grundlegenden Beispiel:

    Layout

     <android.support.design.widget.TextInputLayout android:id="@+id/text_input_layout" android:layout_width="match_parent" android:layout_height="wrap_content" app:errorEnabled="true"> <android.support.design.widget.TextInputEditText android:id="@+id/edit_text" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Enter your name" /> </android.support.design.widget.TextInputLayout> 

    Anmerkung: Durch die Einstellung von app:errorEnabled="true" als Attribut des TextInputLayout es nicht ändern, es ist Größe, sobald ein Fehler angezeigt wird – so dass es im Grunde blockiert den Raum.

    Code

    Um den Fehler unterhalb des EditText zu zeigen, EditText du einfach #setError auf dem TextInputLayout aufrufen:

     TextInputLayout til = (TextInputLayout) findViewById(R.id.text_input_layout); til.setError("You need to enter a name"); 

    Ergebnis

    Bild zeigt den Text mit der Fehlermeldung

    Um den Fehler auszublenden und die Tönung zurückzusetzen, rufen til.setError(null) einfach til.setError(null) .


    Hinweis

    Um die TextInputLayout verwenden zu können, musst du deinen build.gradle Abhängigkeiten build.gradle :

     dependencies { compile 'com.android.support:design:25.1.0' } 

    Einstellen einer benutzerdefinierten Farbe

    Standardmäßig ist die Zeile des EditText rot. Wenn Sie eine andere Farbe anzeigen müssen, können Sie den folgenden Code verwenden, sobald Sie setError .

     editText.getBackground().setColorFilter(getResources().getColor(R.color.red_500_primary), PorterDuff.Mode.SRC_ATOP); 

    Um es zu löschen, rufen Sie einfach die folgende Zeile an:

     editText.getBackground().clearColorFilter; 

    Ihr Bearbeitungstext sollte in ein TextInputLayout eingehüllt werden

      <android.support.design.widget.TextInputLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:id="@+id/tilEmail"> <EditText android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="textEmailAddress" android:ems="10" android:id="@+id/etEmail" android:hint="Email" android:layout_marginTop="10dp" /> </android.support.design.widget.TextInputLayout> 

    Um eine Fehlermeldung zu erhalten, wie Sie es wollten, setzen Sie Fehler auf Texteingabe Layout

     TextInputLayout tilEmail = (TextInputLayout) findViewById(R.id.tilEmail); if (error){ tilEmail.setError("Invalid email id"); } 

    Sie sollten Designunterstützungsbibliotheksabhängigkeit hinzufügen. Fügen Sie diese Zeile in Ihre Gradle-Abhängigkeiten hinzu

    Kompilieren 'com.android.support:design:22.2.0'

    Die Antwort von ReVerse ist großartig, aber es hat nicht darauf hingewiesen, wie man die schwimmende Fehler-Tooltip Art von Ding zu entfernen

    Du brauchst edittext.setError(null) , um das zu entfernen.
    Auch, wie jemand darauf hingewiesen, brauchen Sie nicht TextInputLayout.setErrorEnabled(true)

    Layout

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

    Code

     TextInputLayout til = (TextInputLayout) editText.getParent(); til.setError("Your input is not valid..."); editText.setError(null); 
     TextInputLayout til = (TextInputLayout)editText.getParent(); til.setErrorEnabled(true); til.setError("some error.."); 

    Rufen Sie myTextInputLayout.setError() anstelle von myEditText.setError() .

    Diese Container und Containment haben doppelte Funktionalität bei Einstellfehlern. Funktionalität, die Sie benötigen, ist Container. Aber du könntest nur eine minimale Version von 23 verlangen.

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