2011-08-25 90 views
1

在我的活动中,我有一个onKeyUp和onKeyDown事件处理程序,这些处理程序被称为普通字符,甚至用于某些unicode字符(如cedilla(ç))。但不适用于其他人,如á,à,ü,é,è,š,ž,è,...为什么onKeyUp或onKeyDown没有被调用某些字符?

这是为什么?我怎样才能注册这些按键(或更好的字符)?

我正在用软键盘(三星和swype键盘)在三星Galaxy S2上测试此功能,其中带长键的重音字符可用。有趣的是,即使是长时间按下cedilla(ç),也可以使用onKeyUp/Down事件处理函数进行注册。

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

我在模拟器中测试了这个(默认安卓2.3.3),行为与真实设备类似。

回答

3

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

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

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

+1

欢迎来到三星数字键盘地狱 – Dimillian

相关问题