TextInputLayout zawiera EditText, który z kolei otrzymuje dane wejściowe od użytkownika. Wprowadzając TextInputLayout z biblioteką wsparcia Android Design, powinniśmy ustawić błąd w TextInputLayout trzymając EditText zamiast samego EditText. Podczas pisania interfejsu użytkownika będzie skupiać się tylko na EditText, a nie na całej operacji TextInputLayout, która może prowadzić do klawiatury opisującej błąd. W poniższym GIF zauważyć, że użytkownik musi najpierw usunąć klawiaturę, aby zobaczyć komunikat o błędzie. To w połączeniu z ustawianiem działań IME do poruszania się za pomocą klawiatury prowadzi do naprawdę mylących wyników.Tekst błędu w TextInputLayout jest objęty przez klawiaturę
Kod Układ xml:
<android.support.design.widget.TextInputLayout
android:id="@+id/uid_text_input_layout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:errorEnabled="true"
android:layout_marginTop="8dp">
<EditText
android:id="@+id/uid_edit_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:singleLine="true"
android:hint="Cardnumber"
android:imeOptions="actionDone"/>
</android.support.design.widget.TextInputLayout>
kod Java ustawienie błąd w TextInputLayout:
uidTextInputLayout.setError("Incorrect cardnumber");
Jak mogę upewnić się, że komunikat jest widoczny bez aktorstwa użytkownika zobaczyć? Czy można przesunąć fokus?
Myślę, że powinieneś złożyć raport o błędzie [tutaj] (https://code.google.com/p/android/issues/list). – natario
Po prostu zrobiłem to teraz @mvai https://code.google.com/p/android/issues/detail?id=178153&thanks=178153&ts=1435245051 – Franzaine
Zgadzam się z tobą, dobry połów (i powodzenia). – natario