Entwerfen Sie Android EditText, um eine Fehlermeldung wie von Google beschrieben anzuzeigen


1 Answers

Ihr EditText sollte in ein TextInputLayout

<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 wie gewünscht zu erhalten, setzen Sie den Fehler auf TextInputLayout

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

Sie sollten eine Design-Support-Bibliothek-Abhängigkeit hinzufügen. Fügen Sie diese Zeile in Ihre Abhängigkeiten ein

compile 'com.android.support:design:22.2.0'
Question

Ich brauche einen EditText , der so aussieht onError:

Das Aufrufen von onError sieht stattdessen so aus:

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

min SDK ist 1

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

Vielen Dank




ReVerse's Antwort ist großartig, aber es hat nicht darauf hingewiesen, wie man den Floating Error Tooltip irgendwie entfernt

Sie benötigen edittext.setError(null) , um das zu entfernen.
Wie bereits erwähnt, benötigen 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);



Related