2011-08-25 88 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

相關問題