在EditText上获取关键事件

如何处理在EditText上键入时按下键的事件? 当显示虚拟键盘并且用户按下时,它被隐藏。 我想处理这个事件,但是在EditText中设置一个OnKeyListener没有帮助。

Solutions Collecting From Web of "在EditText上获取关键事件"

谢谢里诺。 这似乎工作,但我设法解决它不同。

我覆盖了EditText的onKeyPreIme(int keyCode,KeyEvent事件)。 此方法拦截IME上的按键。 = d

public boolean onKeyPreIme(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) { // do your stuff return false; } return super.dispatchKeyEvent(event); } 

这不行?

 edText.setOnKeyListener(new OnKeyListener() { public boolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN) { //check if the right key was pressed if (keyCode == KeyEvent.KEYCODE_BACK) { return true; } } return false; } }); 

编辑

好吧,这是令人沮丧的。 Android在closuresQwerty键盘时不发送IME事件。 这是唯一可以解决的问题 。 我希望它也适合你。

我不知道为什么这种情况,但OnKeyListener的作品,如果你只是在你的自定义EditText上重写onKeyPreIme。

 customEditText.setOnKeyListener((v, keyCode, event) -> { if(event.getAction() == KeyEvent.ACTION_DOWN) { switch (keyCode) { case KeyEvent.KEYCODE_BACK: getPresenter().onBackPressed(); break; } } return false; }); 

 @Override public boolean onKeyPreIme(int keyCode, KeyEvent event) { return super.dispatchKeyEvent(event); }