Я использую EditText
внутри a TextInputLayout
, но после обновления библиотеки поддержки до 23.2.0 я получаю это предупреждение в logcat: какая разница между обычным EditText
и a TextInputEditText
? Кажется, я не могу найти для него никакой документации.
94
Ответы:
Мне тоже было интересно, Дэниел Уилсон собрал документацию, но для неподготовленного глаза это мало что значит. Вот что это такое: «режим извлечения» относится к типу вида, который отображается, когда пространство слишком мало, например альбомная ориентация на телефоне. Я использую Galaxy S4 с Google Keyboard в качестве редактора метода ввода (IME).
Альбомный интерфейс без видимого IME
Основываясь на фокусе (на описании), вы можете увидеть, как
TextInputLayout
в действии выводится подсказка за пределы редактора. Здесь ничего особенного, это то, чтоTextInputLayout
надо делать.Редактирование ландшафтного интерфейса пустого поля имени
Редактируя Имя, вы можете видеть, что IME не дает вам намеков на то, что вы редактируете.
Редактирование ландшафтного интерфейса пустое поле Описание
Редактируя описание, вы видите, что IME дает вам представление о том, что вы редактируете.
Макет XML
Разница между этими двумя областями их типа
EditText
VSTextInputEditText
. Важным здесь является то, чтоTextInputLayout
есть ,android:hint
а не обернутый EditText, это тот случай , когдаTextInputEditText
«s несколько строк кода 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>
источник
android:hint
свойство должно входитьTextInputEditText
вместоTextInputLayout
.TextInputEditText
- это деталь реализации пользовательского интерфейса.Для него нет документации, но класс обычный
EditText
с одной дополнительной функцией:В частности, он устанавливает
EditorInfo.hintText
. Вы заметите, что вTextInputLayout
классе вы можете указать подсказку и ее внешний вид, а не как часть дочернего элемента.EditText
виджета.Если вам нужно это сделать, вы должны использовать,
TextInputEditText
чтобы он обращал внимание на подсказку, указанную вами в файлеTextInputLayout
.источник
По сути, это одно и то же, но я думаю, что у
TextInputEditText
него больше функций и, возможно, атрибутов. Я перешел на,TextInputEditText
и все заработало и выглядело так же, как и раньше со стандартомEditText
.источник
Единственная разница в том, что когда ваше устройство находится в альбомном режиме,
TextInputEditText
подсказка будет отображаться,EditText
а не будет.источник
У меня была эта проблема, и я просто удалил эту строку в своем XML-файле:
android: fitsSystemWindows = "true"
и ошибка исчезла.
источник