2016-09-30 3 views
1

Ich bin mit einem Spinner mit dem neuen StilSpinner mit Fehlern in Android

Base.Widget.AppCompat.Spinner.Underlined 

ich die unterstrichenen sehen kann und die Linie mit der Akzentfarbe gezeigt, während ich die Möglichkeit, mich auswählen.

Das Problem ist, dass ich keinen Weg finden konnte, um den Fehler mit der roten Unterstreichung wie Google für alle seine App für das Geburtsdatum zum Beispiel zu zeigen.

Um den Fehler zu sehen, versuchen Sie, ein neues Konto in einer der Google-Apps hinzuzufügen. Sie werden nach dem Geburtsdatum fragen. Geben Sie ein ungültiges Datum ein und drücken Sie dann auf Weiter.

Gibt es eine Möglichkeit, dies zu tun, ohne die MaterialSpinner Bibliothek von Drittanbietern zu verwenden?

Screenshot of Google app

Antwort

1

Zu allererst: Die verschiedenen Seiten sehen Sie, wenn Sie ein neues Google-Konto auf Ihrem Gerät erstellen sind einfach eine WebView. Sie verwenden also keine nativen Komponenten/Widgets.

standardmäßig die Spinner Widget hat kein setError(...) Methode, wie die EditText (die sich von der TextView durch die Art und Weise abgeleitet wird). Um einen Fehler in einem Spinner anzuzeigen, müssen Sie zunächst die Ansicht des aktuell ausgewählten Elements abrufen und sie als TextView darstellen (siehe this answer).
Hinweis: ClassCastException wird auftreten, wenn Sie ein Layout verwenden, dessen Stammelement kein TextView ist.

Hier ist der Haken dieses Ansatzes: Es sieht nicht wie die Fehlermeldung in Ihrem Beispiel oder die Fehlermeldung der TextInputLayout.
Um den gewünschten Effekt zu erzielen, müssen Sie eine Bibliothek eines Drittanbieters verwenden oder diese selbst implementieren.

Weitere Anmerkung: Wenn man sich die source code der MaterialSpinner Bibliothek, die Sie sehen können, dass es die AppCompatSpinner-Klasse erweitert und fügt zusätzliche Methoden wie die setError Methode, die Sie erwähnt haben. Wenn Sie sich die Methode onDraw(...) ansehen, können Sie sehen, wie der Fehler angezeigt wird.