在我的活动中,我有一个onKeyUp和onKeyDown事件处理程序,它们被称为普通字符,甚至是一些unicode字符,如cedilla(ç)。但不适用于á,à,ü,é,č,š,ž,è等......
为什么?我如何注册那些按键(或者更好的是字符)?
我正在三星Galaxy S2上使用软键盘(三星和swype键盘)对其进行测试,其中带有长按键的重音字符。有趣的是,即使是cedilla(ç),也可以使用相同的长按,可以使用onKeyUp / Down事件处理程序进行注册。
我在活动上使用onKeyUp / Down。主视图上没有文本框或任何相关文本。只是修改过的ImageView。
我也在模拟器中测试了它(默认的android图像2.3.3),行为类似于真实设备。
答案 0 :(得分:3)
通过测试,我找到了答案。大多数unicode字符由onKeyMultiple
事件处理程序处理。如果你得到
keyCode == KeyEvent.KEYCODE_UNKNOWN && event.getAction() == KeyEvent.ACTION_MULTIPLE
然后您可以通过调用event.getCharacters()
来获取unicode字符。它实际上都是documented,虽然有点难以找到。