在我的情况下,我需要在将所有关键事件发送到目标之前拦截它们。所以我在每个视图或小部件上安装了一个KeyListener,Activity.onKey在这种情况下无法满足我。
但是,我发现如果view(如RelativeLayout)不可聚焦,它将不会收到任何KeyEvent。我也收到了以下警告
WARN / KeyCharacterMap(312):没有用于id 0的键盘 WARN / KeyCharacterMap(312):使用默认键映射:/system/usr/keychars/qwerty.kcm.bin
如果我强迫视图可以聚焦,它将会收到KeyEvent。我对这种现象感到好奇。我不知道系统是否永远不会发送KeyEvent来查看哪个是不可聚焦的,或者我只是用错误的方法来拦截关键事件。
答案 0 :(得分:0)
为此,请在活动中使用dispatchKeyEvent
(请参阅http://developer.android.com/reference/android/view/Window.Callback.html#dispatchKeyEvent%28android.view.KeyEvent%29)。这应该接收每个KeyEvent。您可以进行任何修改,然后如果您希望启动标准处理,请致电super.dispatchKeyEvent
。