Używam EditText
wewnątrz a TextInputLayout
, ale po uaktualnieniu biblioteki obsługi do 23.2.0, pojawia się ostrzeżenie w logcat, Jaka jest różnica między zwykłym EditText
a TextInputEditText
? Nie mogę znaleźć żadnej dokumentacji do tego.
android
android-layout
android-edittext
android-support-library
android-textinputlayout
Silvia H.
źródło
źródło
Odpowiedzi:
Ja też się nad tym zastanawiałem, Daniel Wilson zebrał dokumentację, ale dla niewprawnego oka nie znaczy to wiele. Oto, o co w tym wszystkim chodzi: „tryb wyodrębniania” odnosi się do typu widoku, który jest wyświetlany, gdy przestrzeń jest zbyt mała, na przykład krajobraz na telefonie. Używam Galaxy S4 z klawiaturą Google jako edytora metody wprowadzania (IME).
Poziomy interfejs użytkownika bez widocznego edytora IME
W oparciu o fokus (na opisie) możesz zobaczyć
TextInputLayout
w akcji wypychanie wskazówki poza edytor. Nie ma tu nic specjalnego, takTextInputLayout
powinno być.Pozioma edycja interfejsu użytkownika puste pole Nazwa
Podczas edycji nazwy widać, że edytor IME nie podpowiada, co edytujesz.
Pozioma edycja interfejsu użytkownika puste pole Opis
Podczas edycji opisu widać, że edytor IME podpowiada, co edytujesz.
Układ XML
Różnica pomiędzy tymi dwoma polami jest ich typ
EditText
VSTextInputEditText
. Ważną rzeczą jest to, żeTextInputLayout
maandroid:hint
zawinięty tekst EditText, a nie opakowany, tak jest w przypadku, gdyTextInputEditText
kilka wierszy kodu Java robi dużą różnicę.Pole nazwy
<android.support.design.widget.TextInputLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="Item Name" > <EditText android:id="@+id/name" android:layout_width="fill_parent" android:layout_height="wrap_content" /> </android.support.design.widget.TextInputLayout>
Pole opisu
<android.support.design.widget.TextInputLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="Item Description" > <android.support.design.widget.TextInputEditText android:id="@+id/description" android:layout_width="fill_parent" android:layout_height="wrap_content" android:inputType="textMultiLine" android:minLines="4" android:scrollbars="vertical" /> </android.support.design.widget.TextInputLayout>
źródło
android:hint
nieruchomość ma wejśćTextInputEditText
zamiastTextInputLayout
.TextInputEditText
to szczegół implementacji interfejsu użytkownika.Nie ma do tego dokumentacji, ale klasa jest regularna
EditText
z jedną dodatkową funkcją:W szczególności ustawia
EditorInfo.hintText
. WTextInputLayout
klasie zauważysz, że możesz określić wskazówkę i jej wygląd, a nie jako częśćEditText
widżetu podrzędnego .Jeśli musisz to zrobić, powinieneś użyć
TextInputEditText
znaku, który zwraca uwagę na informacje podpowiedzi, które podałeś wTextInputLayout
.źródło
Zasadniczo są tym samym, ale myślę, że
TextInputEditText
ma więcej funkcji i być może atrybutów. Zmieniłem naTextInputEditText
i wszystko działało i wyglądało tak, jak wcześniej ze standardemEditText
.źródło
Jedyną różnicą jest to, że gdy urządzenie jest w trybie poziomym,
TextInputEditText
pokaże wskazówkę,EditText
nie.źródło
Miałem ten problem i właśnie usunąłem ten wiersz w moim pliku xml:
android: fitsSystemWindows = "true"
i błąd zniknął.
źródło