Android: нет KeyEvent на не сфокусированном виде? - PullRequest
0 голосов
/ 23 мая 2011

В моем случае мне необходимо перехватить все ключевые события, прежде чем они будут направлены к целиПоэтому я установил KeyListener на каждое представление или виджет, Activity.onKey не может удовлетворить меня в этом случае.

Однако я обнаружил, что если представление (например, RelativeLayout) не фокусируется, оно не получит никакого KeyEvent.И я также получил следующие предупреждения

WARN / KeyCharacterMap (312): Нет клавиатуры для идентификатора 0
WARN / KeyCharacterMap (312): Использование стандартной раскладки клавиатуры: / system / usr / keychars / qwerty.kcm.bin

Если я установил фокусировку на просмотр, он получит KeyEvent.Мне любопытно об этом явлении.Я понятия не имею, если система никогда не отправляет KeyEvents для просмотра, который не может быть сфокусирован, или просто я использовал неправильный способ перехвата ключевых событий.

1 Ответ

0 голосов
/ 23 мая 2011

Для этого используйте dispatchKeyEvent (см. http://developer.android.com/reference/android/view/Window.Callback.html#dispatchKeyEvent%28android.view.KeyEvent%29) в Activity. Это должно получать каждый KeyEvent. Вы можете сделать любые изменения и затем вызвать super.dispatchKeyEvent, если вы хотите, чтобы стандартная обработка включилась.

...