2016-10-09 7 views
2

TextInputEditText(Material Designから)で押されたキーをキャプチャしようとしていますが、キーボードのいずれかのキーを押してもonKeyメソッドに入ることはできません。誰か助けてくれますか?AndroidでTextInputEditTextで押されたキーを登録する

txtInputApo.setOnKeyListener(new View.OnKeyListener() { 
     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      Log.i("onKey","true"); 
      if(event.getAction() == KeyEvent.ACTION_UP){ 
       switch (keyCode){ 
        case KeyEvent.KEYCODE_SPACE: 
         String Espaces = txtInputApo.getText().toString().replaceAll(" ", ""); 
         txtInputApo.setText(Espaces); 
         txtInputApo.setSelection(Espaces.length()); 
         break; 

       } 
      } 

      return false; 
     } 
    }); 

ありがとう!

答えて

3

View.OnKeyListenerは、主にハードウェア入力用に設計されています。ほとんどの場合、代わりにこの種のシナリオ(ユーザー入力の監視と変更)のためにTextWatcherを利用する方が良いです。

あなたはTextWatcherをご希望の結果を達成するために、このような何かを行うことができます。

TextWatcher watcher = new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      String editableString = s.toString(); 
      if (editableString.contains(" ")) { 
       final String spaceFreeString = editableString.replaceAll(" ", ""); 
       txtInputApo.setText(spaceFreeString); 
       txtInputApo.setSelection(spaceFreeString.length()); 
      } 
     } 
    }; 
    txtInputApo.addTextChangedListener(watcher); 
+0

ありがとう!私は前に 'TextWatcher'で試しましたが、私はまた、入力キーを取得する必要があり、私はそれを行う方法を知らなかった。とにかく私はこのソリューションで管理できると思います。ありがとうございました! –

関連する問題