0

Я знаю, как получить KeyEvents с физической клавиатуры, но как мне получить их с мягкой клавиатуры?Как вы получаете KeyEvents с панели инструментов EditText?

Этот код не работает для мягкой клавиатуры:

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 
     } 
    }); 
} 

ИЛИ

EditText.addTextChangedListener(new TextWatcher(){ 
    //do something 
}) 
Смежные вопросы