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.
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.
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).
W oparciu o fokus (na opisie) możesz zobaczyć TextInputLayout
w akcji wypychanie wskazówki poza edytor. Nie ma tu nic specjalnego, tak TextInputLayout
powinno być.
Podczas edycji nazwy widać, że edytor IME nie podpowiada, co edytujesz.
Podczas edycji opisu widać, że edytor IME podpowiada, co edytujesz.
Różnica pomiędzy tymi dwoma polami jest ich typ EditText
VS TextInputEditText
. Ważną rzeczą jest to, że TextInputLayout
ma android:hint
zawinięty tekst EditText, a nie opakowany, tak jest w przypadku, gdy TextInputEditText
kilka wierszy kodu Java robi dużą różnicę.
<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>
<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>
android:hint
nieruchomość ma wejść TextInputEditText
zamiast TextInputLayout
.
TextInputEditText
to szczegół implementacji interfejsu użytkownika.
Nie ma do tego dokumentacji, ale klasa jest regularna EditText
z jedną dodatkową funkcją:
Użycie tej klasy pozwala nam wyświetlać wskazówkę w edytorze IME w trybie „wyodrębniania”.
W szczególności ustawia EditorInfo.hintText
. W TextInputLayout
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ś w TextInputLayout
.
Zasadniczo są tym samym, ale myślę, że TextInputEditText
ma więcej funkcji i być może atrybutów. Zmieniłem na TextInputEditText
i wszystko działało i wyglądało tak, jak wcześniej ze standardem EditText
.
Miałem ten problem i właśnie usunąłem ten wiersz w moim pliku xml:
android: fitsSystemWindows = "true"
i błąd zniknął.