Android 处理自定义键盘上的 'search' 按钮按下
Android handle 'search' button press on custom keyboard
我正在开发自己的自定义键盘。
如果我们的键盘使用 IME_ACTION_SEARCH
参数打开,如何处理 'search' 按钮按下?
我有以下代码,但不幸的是在搜索案例中它不起作用。在常规情况下,使用“完成”按钮效果很好。
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));
}
谢谢
我找到了解决方法:
endDefaultEditorAction(true);
这是InputMethodService
的一个方法
完整代码为:
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;
我正在开发自己的自定义键盘。
如果我们的键盘使用 IME_ACTION_SEARCH
参数打开,如何处理 'search' 按钮按下?
我有以下代码,但不幸的是在搜索案例中它不起作用。在常规情况下,使用“完成”按钮效果很好。
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));
}
谢谢
我找到了解决方法:
endDefaultEditorAction(true);
这是InputMethodService
完整代码为:
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;