Доданий EditText не є TextInputEditText. Будь ласка, перейдіть на використання цього класу


92

Я використовую EditTextвсередині a TextInputLayout, але після оновлення бібліотеки підтримки до 23.2.0, я отримую це попередження в logcat, Яка різниця між звичайним EditTextта a TextInputEditText? Здається, я не можу знайти жодної документації для цього.


Я модернізував свою бібліотеку підтримки до 23.2.1, але все ще TextInputEditText не може бути вирішений у моєму коді . як ти це вирішив?
Edijae Crusar,

Відповіді:


109

Мені теж це було цікаво, Деніел Вілсон зібрав документацію, але для невченого ока це не означає багато. Ось про що йдеться: "режим витягування" стосується типу подання, яке відображається, коли місця замало, наприклад альбомної орієнтації на телефоні. Я використовую Galaxy S4 з клавіатурою Google як редактор методів введення (IME).

Пейзажний інтерфейс без видимого IME

Виходячи з фокусу (на описі), ви можете побачити, TextInputLayoutяк підказка висувається за межі редактора. Тут нічого особливого, це те, що TextInputLayoutповинно робити.

Пейзажний інтерфейс без видимого IME

Пейзажний інтерфейс редагування порожнього поля Ім'я

Редагуючи ім'я, ви бачите, що IME не дає вам натяку на те, що ви редагуєте.

Пейзажний інтерфейс редагування порожнього поля Ім'я

Редагування пейзажного інтерфейсу порожнє поле Опис

Редагуючи опис, ви бачите, що IME дає вам підказку про те, що ви редагуєте.

Редагування пейзажного інтерфейсу порожнє поле Опис

Розмітка XML

Різниця між цими двома областями їх типу EditTextVS TextInputEditText. Важливим тут є те, що TextInputLayoutмає, android:hintа не загорнутий EditText, це той випадок, коли TextInputEditTextкілька рядків коду Java мають велике значення.

Поле імені

<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>

3
Я модернізував свою бібліотеку підтримки до 23.2.1, але все ще TextInputEditText не може бути вирішений у моєму коді. як ти це вирішив?
Edijae Crusar

У вас також є бібліотека дизайну? Це не на підтримку.
TWiStErRob

1
Коротке зауваження: згідно з документами, android:hintвластивість повинна входити TextInputEditTextзамість TextInputLayout.
DriesOeyen

1
@luxsypher я в кінцевому підсумку скинув його і використав інший спосіб, який поміщає EditText у TextInputLayout
Edijae Crusar

1
@ jeet.chanchawat це оновлення, тому це безпечно. Ви завжди повинні використовувати найзагальніший тип, який надає вам необхідну функціональність (= API). Використання TextInputEditText- це деталь реалізації інтерфейсу користувача.
TWiStErRob

34

Для нього немає документації, але клас є звичайним EditTextз однією додатковою функцією:

Використання цього класу дозволяє нам відображати підказку в IME, коли знаходиться в режимі "вилучення".

Зокрема, він встановлює EditorInfo.hintText. Ви помітите, що в TextInputLayoutкласі ви можете вказати підказку та її зовнішній вигляд, а не як частину дочірнього EditTextвіджета.

Якщо вам потрібно це зробити, вам слід скористатися, TextInputEditTextщоб він звертав увагу на інформацію про підказки, яку ви вказали в TextInputLayout.


2
будь-який приклад? Я поняття не маю, що ви пропонуєте
behelit

4

Вони по суті одне і те ж, але я думаю, що він TextInputEditTextмає більше можливостей та можливо атрибутів. Я змінився на TextInputEditTextі все працювало і виглядало так, як це було раніше зі стандартом EditText.


Я вже використовую TextInputLayout, я питаю про альтернативу EditText під назвою TextInputEditText
Silvia H

На жаль, я говорив про TextInputEditText, але сказав макет. Я відредагував відповідь
Нік Моуен

0

Єдина відмінність полягає в тому, що коли ваш пристрій перебуває в альбомному режимі, TextInputEditTextпідказка EditTextне відображатиметься.


-3

У мене була ця проблема, і я просто видалив цей рядок у своєму xml-файлі:

android: fitsSystemWindows = "true"

і помилка зникла.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.