0

我知道如何从物理键盘获取KeyEvent,但是如何从软键盘获取它们?如何从EditText软键盘获得KeyEvent?

此代码不能用于软键盘的工作:

editText.setOnKeyListener(new View.OnKeyListener() { 
    public boolean onKey(View v, int keyCode, KeyEvent event) { 
     Toast.makeText(this, Integer.toString(keyCode), Toast.LENGTH_SHORT) 
     return false; 
    } 
}); 

回答

1

也许你需要的TextChangedListener(或使用它作为替代方法):

TextWatcher textWatcher = new TextWatcher() { 
    public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
    } 
    public void onTextChanged(CharSequence s, int start, int before,int count) {   
    } 
    public void afterTextChanged(Editable s) {     
    }  
}; 
editText.addTextChangedListener(textWatcher); 
0

试试这个

public void onCreate(Bundle savedInstanceState) { 
    ... 
    etField =(EditText)findViewById(R.id.your_edit_text); 

    etField.setOnKeyListener(new OnKeyListener() { 

     @Override 
     public boolean onKey(View v, int keyCode, KeyEvent event) { 
      // register the text when "enter" is pressed 
      if (event.getAction() == KeyEvent.ACTION_DOWN 
      || event.getAction() == KeyEvent.ACTION_UP) { 
      int timesPressed = event.getRepeatCount(); 
      //do something 
     } 
    }); 
} 

OR

EditText.addTextChangedListener(new TextWatcher(){ 
    //do something 
})