问题
I'am developing my own custom keyboard.
How to handle 'search' button press in case if our keyboard opened with IME_ACTION_SEARCH
parameter?
I have following code, but unfortunately in search case it's not working. In regular situation with Done button it working good.
final int options = this.getCurrentInputEditorInfo().imeOptions;
final int actionId = options & EditorInfo.IME_MASK_ACTION;
switch (actionId) {
case EditorInfo.IME_ACTION_SEARCH:
ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_SEARCH));
break;
default:
ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER));
}
Thanks
回答1:
I found the solution to do it:
endDefaultEditorAction(true);
it's a method of InputMethodService
The full code is:
case Keyboard.KEYCODE_DONE:
final int options = this.getCurrentInputEditorInfo().imeOptions;
final int actionId = options & EditorInfo.IME_MASK_ACTION;
switch (actionId) {
case EditorInfo.IME_ACTION_SEARCH:
sendDefaultEditorAction(true);
break;
case EditorInfo.IME_ACTION_GO:
sendDefaultEditorAction(true);
break;
case EditorInfo.IME_ACTION_SEND:
sendDefaultEditorAction(true);
break;
default:
ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER));
}
break;
来源:https://stackoverflow.com/questions/30698657/android-handle-search-button-press-on-custom-keyboard