Почему onKeyUp или onKeyDown не вызываются для определенных символов? - PullRequest
1 голос
/ 25 августа 2011

В моей деятельности у меня есть обработчики событий onKeyUp и onKeyDown, которые вызываются для обычных символов и даже для некоторых символов Юникода, таких как cedilla (ç). Но не для других, таких как á, à, ü, é, č, š, ž, è, ...

Почему это? И как я могу зарегистрировать эти нажатия клавиш (или, что еще лучше, символы)?

Я тестирую это на Samsung Galaxy S2 с программной клавиатурой (samsung и swype), где акцентированные символы доступны при длительном нажатии клавиши. Интересно отметить, что даже cedilla (ç), который доступен при том же длинном нажатии, действительно регистрируется с помощью обработчика событий onKeyUp / Down.

Я использую onKeyUp / Down для активности. На главном экране нет текстового поля или текста Просто модифицированный ImageView.

Я также проверял это в эмуляторе (изображение по умолчанию для Android 2.3.3), и поведение аналогично реальному устройству.

1 Ответ

3 голосов
/ 29 августа 2011

Через тестирование я нашел ответ.Большинство символов Юникода обрабатываются обработчиком событий onKeyMultiple.Если вы получите

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

Тогда вы можете получить символ юникода, вызвав event.getCharacters().На самом деле все это задокументировано , хотя найти его немного сложно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...