Как получить Окно InputMethod на Android - PullRequest
0 голосов
/ 19 декабря 2018

Для того, чтобы собирать пользовательские функции нажатия клавиш в нашем приложении, я должен собрать прикосновение (или просто отметку времени клика) в представлении метода ввода (программная клавиатура).

1) Насколько я знаюокно программной клавиатуры отличается от окна Действия

2) Пока я могу получить окно вида, я могу перехватить событие касания этого окна.

Так есть ли способ получить окно софт-клавиатуры?enter image description here

1 Ответ

0 голосов
/ 19 декабря 2018

Насколько я знаю, окно клавиатуры принадлежит системному интерфейсу, как строка состояния или окно уведомлений;обычное приложение не имеет доступа к таким системным окнам в платформе Android.

Однако вы можете попробовать кое-что сложное, чтобы увидеть, достигнет ли оно вашей цели: при запуске программной клавиатуры вы можете рассчитать ее высоту, а затемсоздайте новое прозрачное окно, например PopupWindow, с такой же высотой, покрывающей клавиатуру.Таким образом, вы сможете перехватывать сенсорные события на клавиатуре, не блокируя их.

=== Обновлено 21/12/2018 ===

Обратите внимание, что все окна в Androidфактически реализован аналогичным образом в пользовательском интерфейсе.т. е. окно приложения вашего приложения, InputMethod, строка состояния, панель уведомлений ... все окна имеют флажки, указывающие тип окна (см. здесь ).Короче говоря, тип окна будет определять z-индекс окна при визуализации на экране.Они подразделяются на Application Window, Sub-Window и System Window.

С учетом сказанного, PopupWindow является лишь одним из них, удобным вспомогательным окном, предоставляемым системой Android (с меньшим z-индексом по сравнению сокна InputMethod).Просто попробуйте создать свое собственное окно, используя WindowManager.addView() с некоторым флагом типа окна, большим, чем у окна InputMethod (которое может иметь флаг TYPE_INPUT_METHOD).

...