Używam EditTextwewną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 EditTexta TextInputEditText? Nie mogę znaleźć żadnej dokumentacji do tego.
Używam EditTextwewną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 EditTexta 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ć TextInputLayoutw akcji wypychanie wskazówki poza edytor. Nie ma tu nic specjalnego, tak TextInputLayoutpowinno 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 EditTextVS TextInputEditText. Ważną rzeczą jest to, że TextInputLayoutma android:hintzawinięty tekst EditText, a nie opakowany, tak jest w przypadku, gdy TextInputEditTextkilka 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:hintnieruchomość ma wejść TextInputEditTextzamiast TextInputLayout.
TextInputEditTextto szczegół implementacji interfejsu użytkownika.
Nie ma do tego dokumentacji, ale klasa jest regularna EditTextz 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 TextInputLayoutklasie zauważysz, że możesz określić wskazówkę i jej wygląd, a nie jako część EditTextwidżetu podrzędnego .
Jeśli musisz to zrobić, powinieneś użyć TextInputEditTextznaku, który zwraca uwagę na informacje podpowiedzi, które podałeś w TextInputLayout.
Zasadniczo są tym samym, ale myślę, że TextInputEditTextma więcej funkcji i być może atrybutów. Zmieniłem na TextInputEditTexti 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ął.