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

时间:2011-08-25 13:11:00

标签: event-handling android-emulator android android-keypad

在我的活动中,我有一个onKeyUp和onKeyDown事件处理程序,它们被称为普通字符,甚至是一些unicode字符,如cedilla(ç)。但不适用于á,à,ü,é,č,š,ž,è等......

为什么?我如何注册那些按键(或者更好的是字符)?

我正在三星Galaxy S2上使用软键盘(三星和swype键盘)对其进行测试,其中带有长按键的重音字符。有趣的是,即使是cedilla(ç),也可以使用相同的长按,可以使用onKeyUp / Down事件处理程序进行注册。

我在活动上使用onKeyUp / Down。主视图上没有文本框或任何相关文本。只是修改过的ImageView。

我也在模拟器中测试了它(默认的android图像2.3.3),行为类似于真实设备。

1 个答案:

答案 0 :(得分:3)

通过测试,我找到了答案。大多数unicode字符由onKeyMultiple事件处理程序处理。如果你得到

keyCode == KeyEvent.KEYCODE_UNKNOWN &&  event.getAction() == KeyEvent.ACTION_MULTIPLE

然后您可以通过调用event.getCharacters()来获取unicode字符。它实际上都是documented,虽然有点难以找到。