2013-11-24 69 views
0

我在應用程序中有一個「edittext」,並且我想在軟鍵盤上按某些字符時執行某些操作。 我已經嘗試了每種方式以及stackOverflow如何表示,但是字符(即A/B,B/B等)不會被檢測到。然後輸入和刪除。 讀取加載後,顯然我必須重寫edittext類,根據這裏的一個例子,所以我已經做到了。是不斷檢測未檢測到Android軟鍵盤字母

txtSMS.setOnKeyListener(new View.OnKeyListener() { 
      @Override 
      public boolean onKey(View v, int keyCode, KeyEvent event) { 
       // You can identify which key pressed buy checking keyCode value 
       // with KeyEvent.KEYCODE_ 
       if (keyCode == KeyEvent.KEYCODE_DEL) { 
        // this is for backspace 
        Toast.makeText(getApplicationContext(), "Del was pressed", Toast.LENGTH_SHORT).show(); 
       } 
       if (keyCode == KeyEvent.KEYCODE_A) { 
        // this is for backspace 
        Toast.makeText(getApplicationContext(), "A was pressed", Toast.LENGTH_SHORT).show(); 
       } 
       return false; 
      } 

但是在上的Del兩種情況: 我在這裏覆蓋方法:

@Override 
    public boolean sendKeyEvent(KeyEvent event) { 
     if (event.getAction() == KeyEvent.ACTION_DOWN 
       && event.getKeyCode() == KeyEvent.KEYCODE_A) { 
      ZanyEditText.this.setRandomBackgroundColor(); 

      return false; 
     } 
     return super.sendKeyEvent(event); 
    } 

我也試圖重寫標準的EditText onKeyListener。我怎麼不能檢測字母表中的字符?它們出現在文本框中...

感謝

回答

0

我有一個類似的issure,你需要使用一個TextWatcher再檢測一下是(使用「的subSequence」)進入最後一個字符。使用邏輯來確定刪除按下或輸入的一個,希望這有助於

下面

見代碼:

editText.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, 
       int count) { 
      // TODO Auto-generated method stub 
      //this is the method that detects the last entry below 
      String c = s.subSequence(before, before + 1).toString(); 
      //check for delete 
      if (before < s.length()) { 
       String c = s.subSequence(before, before + 1).toString(); 
       //see if a was entererd 
       if (c == a) { 
        //a entered 

       } 
      } else { 
       //delete pressed 

      } 

     } 

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

     } 

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

     } 

    });