我有一个自定义视图,其中onKeyDown()
被覆盖。当我使用标准的Android英语(或意大利语)软键盘时它工作正常,但是当我将设备设置为俄语时,键盘事件永远不会到达onKeyDown()
或onKeyUp()
(它们从未被调用,我尝试过断点)。
此外,如果所有视图都放弃了该事件,我应该能够从活动的方法中捕获它,但似乎我甚至不能在那里。请注意,视图是集中的,实际上我可以捕获方向键按下。还删除了删除/退格俄语软键。
我该如何捕捉俄语字符键事件?
答案 0 :(得分:1)
来自KeyEvent文档:
由于软输入法可以使用多种创造性的输入文本方式,因此无法保证软键盘上的任何按键都会产生关键事件:这由IME自行决定,事实上发送此类事件是泄气。您不应该依赖于接收软输入法上任何键的KeyEvent。
如果您 获取KeyEvent
s,则会违反Google的建议,并且不会在所有版本的Android中支持。随着时间的推移,这种方法肯定会在更多设备上中断。那么你如何捕捉角色?
一种选择是使用TextWatcher。
答案 1 :(得分:0)
这似乎也是其他Android用户所拥有的问题,我找到的解决方案是覆盖dispatchKeyEvent。
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
Toast.makeText(getApplicationContext(), "Key: " + event.getKeyCode(),
Toast.LENGTH_LONG).show();
return super.dispatchKeyEvent(event);
}
使用event.getAction()调用可以告诉你它是onKeyDown,onKeyUp等。有关KeyEvents的更多信息,请查看this Android developers' page,有关Android键盘没有响应某些语言的更多信息,请查看{ {3}}