use*_*565 3 events user-interface android handler onkeydown
在onKeyDown的基本活动中进行简单的覆盖,我能够捕获除了enter和dpad中心按钮之外的所有按键(通过断点确定).我不知道为什么 - 有人可以对这种情况有所了解吗?
编辑:快速更新 - 它确实捕获Dpad中心并输入关键LONG按下,但仍然不是正常的按下.
我知道这个问题已经很老了,但是如果一些绝望的编码器迷路了,我会发布我的答案.
我的USB键盘遇到了类似的问题.当除了EditText框以外的任何其他内容时,ENTER键从未被onKeyUp或onKeyDown捕获.
如果你使用dispatchKeyEvent(),你会在它到达窗口之前获得KeyEvent,在我的情况下,我肯定会得到ENTER键.但谨慎,该事件被调用两次,一次用于按键,一次用于按键.
这里有一个示例代码:
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
System.out.println(event.getAction() + " " + event.getKeyCode() + " - " + (char) event.getUnicodeChar());
return true;
}
Run Code Online (Sandbox Code Playgroud)
您阅读了文档吗?
软件键盘中的按键通常不会触发此侦听器,尽管有些人可能会在某些情况下选择这样做。不要依靠它来捕获软件按键。
另外,您捕获密钥的方式非常模糊。您甚至没有使用以下命令检查发送给您的 keyCode:
@Override public boolean onKeyDown(int keyCode, KeyEvent event) { return false; }
您可以从视图处理 onKey:
public boolean onKey(View v, int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_ENTER:
/* This is a sample for handling the Enter button */
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
请记住实现 OnKeyListener 并设置您的侦听器
viewname.setOnKeyListener(this);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6237 次 |
最近记录: |