2

私のアクティビティでは、onKeyUp および onKeyDown イベント ハンドラーがあり、これらは通常の文字や、セディラ (ç) などの一部の Unicode 文字に対しても呼び出されます。ただし、á、à、ü、é、č、š、ž、è、...

何故ですか?そして、それらのキーの押下 (またはさらに良いことに、文字) を登録するにはどうすればよいですか?

私はこれをソフト キーボード (samsung および swype キーボード) を備えた Samsung Galaxy S2 でテストしており、キーを長押しするとアクセント付きの文字を使用できます。同じ長押しで使用できるセディラ (ç) でさえ、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 に答える