Поведение программного ввода Android для KEYBOARD_12KEY, KEYBOARD_QWERTY и KEYBOARD_NOKEYS - PullRequest
0 голосов
/ 04 сентября 2018

Мне было интересно, знает ли кто-нибудь здесь, в каких сценариях Android покажет пользователю экранную программную клавиатуру и как Android учитывает различные доступные типы аппаратных клавиатур (KEYBOARD_12KEY, KEYBOARD_QWERTY и * 1003). *).

https://developer.android.com/reference/android/content/res/Configuration#keyboard

Вопрос (ЧАСТЬ 1) - Может ли кто-нибудь заполнить следующую форму

Обратите внимание, что ??? = [show | hide | do nothing | other]

Сценарий 1)
Пользователь нажимает на AppCompatEditText и имеет KEYBOARD_NOKEYS, Android будет ??? программный ввод

Сценарий 2)
Пользователь нажимает на AppCompatEditText и имеет KEYBOARD_12KEY, Android будет ??? мягкий ввод

Сценарий 3)
Пользователь нажимает на AppCompatEditText и имеет KEYBOARD_QWERTY, Android будет ??? мягкий ввод

Вопрос (ЧАСТЬ 2) - возможно ли отключить это встроенное поведение

Теперь, когда вы заполнили все пробелы ??? = [show | hide | do nothing | other], возможно ли отключить эти встроенные функции Android? Вместо этого замените их на пользовательские версии, вручную определив тип аппаратной клавиатуры на устройстве и показывая / скрывая программную клавиатуру внутри View.OnFocusChangeListener?

1 Ответ

0 голосов
/ 04 сентября 2018

Отображать ли программную клавиатуру, на самом деле решает программная клавиатура. Программная клавиатура имеет функцию InputMethodService.onEvaluateInputViewShown (). Эта функция вызывается, когда есть возможность показать программную клавиатуру. Если он вернет true, клавиатура будет показана. Реализация по умолчанию состоит в том, чтобы посмотреть, существует ли аппаратная клавиатура, и не отображать ее в этом случае. Но программная клавиатура может переопределить это для отображения в любом случае.

Все это полностью зависит от программной клавиатуры, какую бы клавиатуру они не использовали (поэтому поведение может меняться в зависимости от того, какую клавиатуру предпочитает пользователь). Больше ничего нельзя переопределить.

...