Android:无法聚焦的视图上没有 KeyEvent?

发布于 2024-11-08 17:52:38 字数 407 浏览 0 评论 0 原文

就我而言,我需要在将所有关键事件分派到目标之前拦截它们。所以我在每个视图或小部件上安装了一个 KeyListener,Activity.onKey 在这种情况下不能满足我。

但是,我发现如果视图(如RelativeLayout)不可聚焦,它将不会接收任何KeyEvent。我还收到以下警告

警告/KeyCharacterMap(312): id 0 没有键盘
WARN/KeyCharacterMap(312):使用默认键盘映射:/system/usr/keychars/qwerty.kcm.bin

如果我强制视图可聚焦,它将接收 KeyEvent。我对这个现象很好奇。我不知道系统是否从不发送 KeyEvents 来查看哪些无法聚焦,或者只是我使用了错误的方式来拦截关键事件。

In my case, I'm required to intercept all key events before they are dispatched to target. So I installed a KeyListener on every view or widget, Activity.onKey can't satisfy me in the case.

However, I found that if view (like RelativeLayout) is not focusable, it won't receive any KeyEvent. And I also got following warnings

WARN/KeyCharacterMap(312): No keyboard for id 0
WARN/KeyCharacterMap(312): Using default keymap: /system/usr/keychars/qwerty.kcm.bin

If I forced view to be focusable, it's going to receive KeyEvent. I'm curious about this phenomenon. I've no idea about if system never sends KeyEvents to view which is unfocusable or just I used wrong way to intercept key events.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笑饮青盏花 2024-11-15 17:52:38

为此,请使用 dispatchKeyEvent (请参阅 http://developer.android.com/reference/android/view/Window.Callback.html#dispatchKeyEvent%28android.view.KeyEvent%29) 在活动上。这应该接收每个 KeyEvent。如果您希望启动标准处理,您可以进行任何修改,然后调用 super.dispatchKeyEvent

To do this use dispatchKeyEvent (see http://developer.android.com/reference/android/view/Window.Callback.html#dispatchKeyEvent%28android.view.KeyEvent%29) on the Activity. This should receive every KeyEvent. You can do any modifications and then call super.dispatchKeyEvent if you want the standard processing to kick in.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文