#android #android-extracted-text
#Android #android-extracted-text
Вопрос:
Недавно у меня была ошибка, из-за которой мой маленький EditText увеличивался, чтобы заполнить все пространство, которое не было занято программной клавиатурой. Но только в ландшафтном режиме.
Я опубликовал это и получил быстрый ответ от полезного участника StackOverflow, что мне нужно добавить android: imeOptions=»flagNoExtractUi», так что я сделал, и это сработало!
Но я все еще этого не понимаю. В документации говорится, что он «используется для указания того, что IME не нужно показывать свой извлеченный текстовый интерфейс» Хорошо, что это? Функция «поиск документов разработчика» в http://developer.android.com показывает фразу «Извлеченный текстовый пользовательский интерфейс», использованную 34 раза в их документации, но я не заметил определения.
Не мог бы кто-нибудь объяснить, что это такое, и почему это влияет только на ландшафтный режим? Заранее спасибо.
Ответ №1:
В ландшафтном режиме по умолчанию редактор методов ввода (IME) получает контроль над полноэкранным режимом при редактировании текста. Идея в том, что на альбомном экране недостаточно места «по вертикали», чтобы показывать что-либо, кроме EditText и программной клавиатуры, при редактировании чего-либо более длинного (например, сообщения электронной почты).
Рассматриваемый пользовательский интерфейс находится здесь: http://developer.android.com/reference/android/inputmethodservice/ExtractEditText.html
Комментарии:
1. Разве нет IME как для альбомной, так и для портретной ориентации? Вы имеете в виду, что ландшафтный IME берет верх? Таким образом, ExtractEditText является производным от EditText. Но я не понимаю, какова его связь с указанным мной EditText.
Ответ №2:
Когда вы используете этот флаг в TextView в своем приложении, он подавляет создание ExtractedTextView в верхней части IME, когда он находится в «полноэкранном» режиме. В режиме «полноэкранного режима» клавиатуре (IME) разрешено заполнять экран и закрывать текстовое представление приложения, которое пользователь пытается отредактировать. Если он запрашивает полноэкранный режим, он будет предоставлен ему. В этом окне ExtractedTextView отображаются те же подсказки, что и в целевом TextView, и позволяет пользователю видеть ход их редактирования. Этот флаг указывает IME не генерировать ExtractedTextView, который может оставить место в верхней части клавиатуры, чтобы увидеть ваш исходный текстовый вид в приложении.
Реализация IME (клавиатуры) по умолчанию переходит в полноэкранный режим в «ландшафтном режиме». Это обычный размер (около 1/3 высоты экрана?) В «портретном режиме». ExtractedTextView по умолчанию генерируется для режима «полноэкранный режим», если вы не подавите его. Я подозреваю, что когда вы видите, что ваш EditText «раздувается», вы на самом деле смотрите на ExtractedTextView клавиатуры в «полноэкранном» режиме.