2011-06-29 6 views
4

私は以下のコードに示すように、ENTERボタンが、TextViewの中で押されたときのために監視する方法を知っている:文字キープレスの検出方法は?

textView.setOnKeyListener(new View.OnKeyListener() { 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
      if((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) { 
       enterPressed(); 
       return true; 
      } 
      return false; 
     } 
}); 

しかし...私は時に文字キー(AZ、0-ために聴いていますか9、特殊文字など)、基本的にはENTER、BACKSPACE、SPACE以外のすべてが押されていますか?ユーザーがTextViewにテキストを入力し始めたときにボタンを有効にしたいので、これを行いたいと思います。不思議なことに、これらの文字キーが押されても、onKey()メソッドは呼び出されません。それで、私がそれらを聞く別の方法がありますか?前もって感謝します!

答えて

5

テキストウォッチャーは、「ソフトウェアキーボードでキーを押すが、一般的にこれをトリガーしませんあなた

textView.addTextChangedListener(new TextWatcher(){ 

    @Override 
    public void afterTextChanged(Editable arg0) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void beforeTextChanged(CharSequence s, int start, int count, 
      int after) { 
     // TODO Auto-generated method stub 

    } 

    @Override 
    public void onTextChanged(CharSequence s, int start, int before, int count) { 
     // TODO Auto-generated method stub 

    } 

}); 
0

この関数int型の範囲が何であるかを チェックするにKeyEventのキーコードを渡しisCharacter(int型)、 のような関数の何かを記述する必要があります - あなたはアルファベットのために対象となる文字の範囲内にあり、あなたkeypressed機能で非常にreturnTrue がisCharacterから返された、真または偽の場合をhanlde場合の数字は、...

+0

まあ主な問題は、法onKey(ということであっても、 )は、通常の文字キーに対しても呼び出されていません。キーイベントが検出されるたびに、ログに書き込むようにしてテストしたところ、onKey()メソッドはENTERまたはBACKSPACEのような関数の呼び出しに対してのみ呼び出されます。 – Brian

+0

この問題を解決したかどうかを確認してください... とにかくこれを追加します。 http://stackoverflow.com/questions/1967740/onkeylistener-not-working-with-soft-keyboard-android – iLikeAndroid

1

に役立つかもしれませんメソッド、いくつかのmaいくつかの状況でそうすることを選ぶ。ソフトウェアの入力方法がキーベースである必要があると仮定しないでください。これで、それはあなたが期待するよりも、別の方法でのキーの押下を使用することができますので、確実にソフト入力キーの押下をキャッチする方法はありません。」

http://developer.android.com/reference/android/view/View.OnKeyListener.html

関連する問題