android TextInputLayout ändert den EditText-Stil, nachdem der Fehler auf null gesetzt wurde

8

Zum ersten Mal benutze ich das neue Android-Widget TextInputLayout, es ist sehr nett, aber ich habe ein Problem mit der setError-Methode

das ist mein XML

%Vor%

WAS GESCHIEHT:

wenn ich renne

%Vor%

Die gesamte EditText Hintergrund- und Hinweistextfarbe wird rot und da ist es in Ordnung. Das Problem ist, wenn ich

ausführen %Vor%

Der Stil des EditText ist komplett gegenüber dem Original geändert.

Anfangssituation:

nicht fokussiert konzentriert

NACH setError("mandatory field")

NACH setError(null)

Ich habe viele Nachforschungen angestellt, konnte aber nichts hilfreiches finden, was zur Hölle sollte das Problem sein?

AKTUALISIEREN

Untersucht im android Quellcode von setError() Methode fand ich das

%Vor%

und Debuggen des Codes Ich habe festgestellt, dass der Code, der in updateEditTextBackground() ausgeführt wird, der folgende ist

%Vor%

Anscheinend ersetzt Androide den Hintergrundfarbton des EditText. Ich habe versucht, eine Datei in meinem Zeichnungsordner abc_edit_text_material.xml mit diesem Code zu erstellen

%Vor%

aber das ist das Ergebnis nach setError(null)

Außerdem habe ich gemerkt, dass das Problem nur existiert, wenn ich setError ("error message") und dannError (null)

starte

UPDATE 2 Dies ist der Code, mit dem ich meine Eingaben validiere

%Vor%

Ich werde verrückt !!!

    
Apperside 09.12.2015, 15:20
quelle

5 Antworten

5

Ich stieß auf ein ähnliches Problem und fand eine einfache Lösung dafür. Dieses Problem tritt auf, wenn wir einen benutzerdefinierten Hintergrund als Zeichen / Farbe auf EditText in TextInputLayout setzen. Eine Lösung wäre, die TextInputLayout abzuleiten und die Methoden setError() und drawableStateChanged() zu überschreiben und unsere benutzerdefinierte Zeichnungsfarbe als EditText's background wieder festzulegen. Zum Beispiel hatte ich eine abgerundete Ecke für meinen EditText's Hintergrund, unten ist meine Unterklasse,

%Vor%

Und dann verwenden Sie Ihre benutzerdefinierte Klasse in der XML,

%Vor%

Hoffe, das hilft. Happy Android Codierung:)

    
Pratima 02.11.2016 12:06
quelle
4

Sie müssen die Farbe einfach auf den gewünschten Wert zurücksetzen, nachdem Sie den Fehler auf null gesetzt haben. Etwas wie:

%Vor%     
0019 21.03.2016 03:26
quelle
4

Dies war ein Fehler in support:design:23.2.0 (und möglicherweise älteren Versionen), der als Problem gemeldet wurde hier und wurde in der 23.3.0 Aktualisierung

behoben     
kingdonnaz 07.04.2016 19:56
quelle
0

Legen Sie den Stil Ihres Textinputs

fest %Vor%

Setzen Sie den Code, unter dem Sie Error (null) setzen

%Vor%

wo Grenze ist mein XML

%Vor%     
H Raval 10.12.2015 09:08
quelle
0

Ich habe einen Trick, um dieses Problem einfach zu lösen:

1, new a class erweitern android.support.design.widget.TextInputEditText; 2, überholen getBackground () -Methode, machen es Null zurückgeben;

weil die Methode updateEditTextBackground () in TextInputLayout beurteilen wird, ob der Hintergrund von editText drawable null ist und jetzt immer null zurückgibt, Ergebnis ist editText's Hintergrund wird nicht durch die Farbe des Fehlertextes geändert.

    
peng gao 25.02.2017 07:18
quelle