Насколько я знаю, окно клавиатуры принадлежит системному интерфейсу, как строка состояния или окно уведомлений;обычное приложение не имеет доступа к таким системным окнам в платформе Android.
Однако вы можете попробовать кое-что сложное, чтобы увидеть, достигнет ли оно вашей цели: при запуске программной клавиатуры вы можете рассчитать ее высоту, а затемсоздайте новое прозрачное окно, например PopupWindow, с такой же высотой, покрывающей клавиатуру.Таким образом, вы сможете перехватывать сенсорные события на клавиатуре, не блокируя их.
=== Обновлено 21/12/2018 ===
Обратите внимание, что все окна в Androidфактически реализован аналогичным образом в пользовательском интерфейсе.т. е. окно приложения вашего приложения, InputMethod, строка состояния, панель уведомлений ... все окна имеют флажки, указывающие тип окна (см. здесь ).Короче говоря, тип окна будет определять z-индекс окна при визуализации на экране.Они подразделяются на Application Window
, Sub-Window
и System Window
.
С учетом сказанного, PopupWindow является лишь одним из них, удобным вспомогательным окном, предоставляемым системой Android (с меньшим z-индексом по сравнению сокна InputMethod).Просто попробуйте создать свое собственное окно, используя WindowManager.addView()
с некоторым флагом типа окна, большим, чем у окна InputMethod (которое может иметь флаг TYPE_INPUT_METHOD
).