就我而言,我需要在将所有关键事件分派到目标之前拦截它们。所以我在每个视图或小部件上安装了一个 KeyListener,在这种情况下 Activity.onKey 不能满足我。
但是,我发现如果视图(如RelativeLayout)不可聚焦,它不会收到任何KeyEvent。我也收到了以下警告
WARN/KeyCharacterMap(312):id 0 没有键盘
WARN/KeyCharacterMap(312):使用默认键盘映射:/system/usr/keychars/qwerty.kcm.bin
如果我强制视图可聚焦,它将收到 KeyEvent。我很好奇这种现象。我不知道系统是否从不发送 KeyEvents 来查看无法聚焦的内容,或者只是我使用了错误的方式来拦截关键事件。