На устройствах Android, использующих программные клавиатуры, я хочу, чтобы в режиме альбомной ориентации не отображалось полноэкранное представление редактирования клавиатуры (показано ниже) (т.е. я хочу видеть только саму программную клавиатуру и мой вид за ней).
Я предполагаю, что это может быть достигнуто с помощью setExtractViewShown(false)
метода on InputMethodService
, но я не могу получить доступ к экземпляру этого по умолчанию и не хочу реализовывать пользовательский метод ввода.
Отредактировано, чтобы добавить: представление, к которому идет ввод, не является TextView
(это View
с пользовательской InputConnection
реализацией), поэтому android:imeOptions="flagNoExtractUi"
здесь работать не будет.
flagNoExtractUi
илиIME_FLAG_NO_EXTRACT_UI
. Тем не менее, в документации дляIME_FLAG_NO_EXTRACT_UI
, которая соответствуетflagNoExtractUi
, говорится, что «Использование этого флага не рекомендуется, и он может устареть в будущем», такflagNoFullscreen
что это рекомендуемый вариант.Ответы:
Я наконец-то ответил на свой вопрос:
Пользовательский интерфейс извлечения (т. Е. Полноэкранный режим редактирования) можно отключить в точке подключения входного соединения:
источник
outAttrs.imeOptions |= EditorInfo.IME_FLAG_NO_EXTRACT_UI;
Для этого перейдите к действию xml и вставьте
android:imeOptions="flagNoExtractUi"
свой код. А куда его наклеивать? Взгляните на код примера активности xml и посмотрите на EditText:Если вам нужны дополнительные параметры настройки клавиатуры, см. Http://developer.android.com/guide/topics/ui/controls/text.html
источник
добавьте свойство
android:imeOptions="flagNoExtractUi"
каждомуEditText
в вашемXML
файле.источник
Ответ выше помог мне найти решение для динамически добавленных EditTexts:
источник
Используйте
android:imeOptions="flagNoFullscreen"
для достижения этой функции.источник
IME_FLAG_NO_EXTRACT_UI
, которая соответствуетflagNoExtractUi
этому, говорится, что «Использование этого флага не рекомендуется, и он может устареть в будущем», поэтомуflagNoFullscreen
это рекомендуемый вариант.Кроме того, если вы хотите объединить несколько imeOptions программно, вы можете использовать | синтаксис.
Например, чтобы отключить полноэкранный режим редактирования в альбомной ориентации и заменить клавишу «Далее» на «ОК» (ACTION_DONE) на клавиатуре, вы можете использовать:
источник
Если вы изменяете IME напрямую, вы можете предотвратить отображение ExtractedView, переопределив
onUpdateExtractingVisibility
:источник
Я знаю, что уже немного поздно, но для тех, кто все еще заинтересован, вот мое решение: в моем случае у меня была ландшафтная активность, содержащая EditText сверху, и мне нужно было реализовать функцию автозаполнения в этой поисковой активности , которая перекрывается клавиатура вызвала проблему, из-за которой пользователь не мог видеть результат RecyclerView . Таким образом, я получил этот EditText в моем макете:
Ура!
источник
Мое решение:
источник
Ты можешь использовать :
в вашем тексте редактирования
источник
Вы можете позвонить, чтобы скрыть программную клавиатуру и очистить фокус от окна поиска.
источник