Я использую EditText внутри TextInputLayout, но после обновления библиотеки поддержки до 23.2.0 я получаю это предупреждение в logcat. Какая разница между регулярными EditText и TextInputEditText? Кажется, я не могу найти документацию.
Добавленный EditText не является TextInputEditText. Вместо этого переключитесь на использование этого класса
Ответ 1
Мне тоже было интересно, Daniel Wilson собрал документацию, но для неподготовленного глаза это мало значит. Вот что это значит: "режим извлечения" относится к типу вида, который отображается, когда пространство слишком мало, например, пейзаж на Телефон. Я использую Galaxy S4 с Google Keyboard как IME.
Пейзажный интерфейс без видимого IME
На основе фокуса (в описании) вы можете увидеть TextInputLayout в действии, нажимая подсказку вне редактора. Здесь ничего особенного, это то, что должен делать TextInputLayout.
Редактирование ландшафтного пользовательского интерфейса пустым Поле имени
Редактируя имя, вы можете видеть, что IME не дает вам намека на то, что вы редактируете.
Редактирование ландшафтного пользовательского интерфейса пустым Поле описания
Редактируя описание, вы можете видеть, что IME дает вам намек на то, что вы редактируете.
Макеты компоновки
Разница между двумя полями - их тип EditText VS TextInputEditText. Важно то, что TextInputLayout имеет android:hint, а не wrapped 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>
Ответ 2
Для этого нет документации, но класс является регулярным EditText с одной дополнительной функцией:
Использование этого класса позволяет отображать подсказку в IME в режиме "extract".
В частности, он устанавливает EditorInfo.hintText. Вы заметите, что в классе TextInputLayout вы можете указать подсказку и ее внешний вид, а не как часть дочернего виджета EditText.
Если вам нужно это сделать, вы должны использовать TextInputEditText, поэтому он обращает внимание на информацию подсказки, указанную в TextInputLayout.
Ответ 3
Они, по сути, одно и то же, но я думаю, что TextInputEditText имеет больше возможностей и, возможно, атрибутов. Я изменился на TextInputEditText, и все сработало и выглядело так, как раньше, со стандартным EditText.
Ответ 4
Этот вопрос старый, однако у меня была эта проблема и просто удалить эту строку в моем XML файле: android: fitsSystemWindows = "true", и ошибка исчезла.


