2

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

这是为什么?以及如何注册这些按键(或者更好的是,字符)?

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

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

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

4

1 回答 1

5

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

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

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

于 2011-08-29T15:23:57.853 回答