【问题标题】:How to Listen Android keyboard Close Event after Typing finished in EditText?在 EditText 中键入完成后如何监听 Android 键盘关闭事件?
【发布时间】:2014-03-04 06:18:10
【问题描述】:
我提到了这个link 来监听 android EditText 完成输入事件。但是从这个参考资料中,我只得到了 Enter 按键事件。当用户在完成输入后关闭键盘以及按下 Next 时,我需要监听一个事件。有什么办法可以在android中监听这些事件。
【问题讨论】:
标签:
android-edittext
android-softkeyboard
keyboard-events
android-keypad
android-event
【解决方案1】:
最后我得到了下一步/完成/搜索的答案并像这样输入按键
@Override
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
if(event !=null){
if(actionId == EditorInfo.IME_ACTION_SEARCH ||
actionId == EditorInfo.IME_ACTION_NEXT ||
actionId == EditorInfo.IME_ACTION_DONE ||
event.getAction() == KeyEvent.ACTION_DOWN &&
event.getKeyCode() == KeyEvent.KEYCODE_ENTER){
if (!event.isShiftPressed()) {
Log.e("", "FINISHED Typing : "+v.getText().toString());
return true; // consume.
}
}
}
else{
if(actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_NEXT || actionId == EditorInfo.IME_ACTION_DONE){
Log.e("", "Next/Done/Search Pressed");
return true;
}
}
return false;
}
同样对于键盘关闭,我自定义了 editText 并将 onKeyPreIme 方法覆盖到其中。每当我需要编辑文本时,我都会使用此编辑文本。这解决了我的问题。
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
if (event.getAction()!=KeyEvent.ACTION_DOWN){
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
dispatchKeyEvent(event);
//do whatever you want to do here, when keypad dismiss on EditText
return false;
}
}
return super.onKeyPreIme(keyCode, event);
}