为什么onKeyUp或onKeyDown没有被某些字符调用



在我的活动中,我有一个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字符。它实际上都有文档,尽管有点难以找到。

最新更新