Ich brauche eine EditText
, die 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 dies automatisch ausführt, oder muss ich den Code dafür schreiben?
Danke dir
EditText
. Wahrscheinlicher ist, dass Sie etwas benötigen, das es umschließtEditText
oder auf andere Weise ergänzt. Siehe github.com/rengwuxian/MaterialEditText .Antworten:
Es ist nicht erforderlich, eine Drittanbieter-Bibliothek zu verwenden, da Google diese
TextInputLayout
als Teil der Bibliothek eingeführt hatdesign-support-library
.Nach einem einfachen Beispiel:
Layout
Hinweis: Wenn Sie
app:errorEnabled="true"
als Attribut fürTextInputLayout
festlegen, wird die Größe nicht geändert, sobald ein Fehler angezeigt wird. Dadurch wird der Platz im Grunde genommen blockiert.Code
Um den Fehler unter
EditText
anzuzeigen, müssen Sie nur#setError
dieTextInputLayout
(NICHT das KindEditText
) anrufen :Ergebnis
Um den Fehler auszublenden und den Farbton zurückzusetzen, rufen Sie einfach an
til.setError(null)
.Hinweis
Um das zu verwenden
TextInputLayout
, müssen Sie Ihrenbuild.gradle
Abhängigkeiten Folgendes hinzufügen :Festlegen einer benutzerdefinierten Farbe
Standardmäßig ist die Zeile von
EditText
rot. Wenn Sie eine andere Farbe anzeigen müssen, können Sie den folgenden Code verwenden, sobald Sie anrufensetError
.Um es zu löschen, rufen Sie einfach die
clearColorFilter
Funktion wie folgt auf:quelle
textInputLayout.setError("Error messsage")
die Farbe des aufrufen,EditText
sollte rot werden. Um es zurückzusetzen, reicht es aus, anzurufentextInputLayout.setError(null)
.editText.getBackground().setColorFilter(getResources().getColor(R.color.red_500_primary), PorterDuff.Mode.SRC_ATOP);
wird mit der neuesten Support-Bibliothek nicht mehr benötigtEditText
, nicht auf dem aufgerufen habeTextInputLayout
. Ich sah diese Antwort und konnte immer noch nicht herausfinden, was ich ändern musste. Sehr leicht zu übersehen.Anruf
myTextInputLayout.setError()
stattmyEditText.setError()
.Diese Container und Containments verfügen über doppelte Funktionen zum Festlegen von Fehlern. Die Funktionalität, die Sie benötigen, ist die eines Containers. Dafür könnten Sie jedoch eine minimale Version von 23 benötigen.
quelle
Sie
EditText
sollten in ein eingewickelt seinTextInputLayout
Um eine gewünschte Fehlermeldung zu erhalten, setzen Sie error auf
TextInputLayout
Sie sollten die Abhängigkeit der Designunterstützungsbibliothek hinzufügen. Fügen Sie diese Zeile in Ihre Gradle-Abhängigkeiten ein
quelle
Die Antwort von reVerse ist großartig, aber es wurde nicht darauf hingewiesen, wie der Tooltip für schwebende Fehler entfernt werden kann
Sie müssen
edittext.setError(null)
das entfernen.Auch, wie jemand betonte, brauchen Sie nicht
TextInputLayout.setErrorEnabled(true)
Layout
Code
quelle
quelle
Wenn immer noch jemand den Fehler bei der Verwendung der in der Antwort erwähnten Google-Designbibliothek hat, verwenden Sie diese bitte wie von @h_k kommentiert.
Anstatt setError in TextInputLayout aufzurufen , verwenden Sie möglicherweise setError in EditText .
quelle
quelle