在我的活动中,我有一个onKeyUp和onKeyDown事件处理程序,它被称为正常字符,甚至为一些unicode字符,如cedilla (ç)。但不为别人像,u, e,č,š,ž,e,…
为什么?我该如何注册这些按键(或者字符)?
我在带有软键盘(三星和swype键盘)的三星Galaxy S2上进行了测试,长按一下键盘就可以使用重音字符。值得注意的是,即使是cedilla (ç),也可以通过相同的长按,确实注册了onKeyUp/Down事件处理程序。
我在活动上使用onKeyUp/Down。在主视图上没有文本框或任何与文本相关的内容。只是一个修改过的ImageView。
我在模拟器中也测试了这个(默认android image 2.3.3),行为与真实设备相似。
通过测试,我找到了答案。大多数unicode字符由onKeyMultiple
事件处理程序处理。如果你得到
keyCode == KeyEvent.KEYCODE_UNKNOWN && event.getAction() == KeyEvent.ACTION_MULTIPLE
则可以通过调用event.getCharacters()
获得unicode字符。它实际上都有文档,尽管有点难以找到。