キーイベント(KeyEvent)の受け取り方

エディットテキストなどのビューで1文字ごとにどのキーが打たれたのかを知るにはOnKeyListenerインターフェイスをそのビューに実装します。

例えば、エディットテキスト内で特定の文字(?や*など)を表示したくない場合は次のようにビューにキーリスナーを実装します。

    EditText nameEditText = findViewById(R.id.edit_text);

    //エディットテキストにキーリスナーを実装
    nameEditText.setOnKeyListener(new View.OnKeyListener() 
    {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) 
        {
            EditText editText = (EditText)v;
            String text = editText.getText().toString();
            if(text.containers("*") || name.containers("?")){
                return true;
            }else{
                return false;
            }
        }
    });

KeyListenerクラスにはonKeyメソッドがあり、引数のvがリスナーを実装したビュー、keyCodeが押されたキーの値です。

この例では、渡されたvをエディットテキストにキャストして、なにかキーが打たれるたびにそのキーをチェックしています。

onKeyメソッドはtrueを返すとキーイベントが発生しなくなるので、それを利用して特定の文字(*と?など)が入力されたらエディットテキストに表示しないように制御しています。

ただし、KeyListenerが受け取れるのはハードウェアに存在するキーのみです。つまり、IMEなどで文字が変換された場合はどのキーが選択されたかを知ることはできません。変換後の文字を調べたい場合は「ソフト・ハード両方のキーイベント」を見てください。

関連項目
プライバシーポリシー