输入Android IME的KeyEvent行为

时间:2013-01-02 07:48:21

标签: android keyevent ime

我有一个自定义实现的IME,在按下ImageButtons时发送KeyEvents。按下标有Enter的ImageButton时,将执行以下代码:

ic.sendKeyEvent(new KeyEvent(0,0,MotionEvent.ACTION_DOWN,KeyEvent.KEYCODE_ENTER,0,0,0,0,KeyEvent.FLAG_EDITOR_ACTION));

问题是当按下Enter时底层应用程序的行为会有所不同。在“消息”中,将发送提交的文本,但在“浏览器”和可编辑字段中,将突出显示键入的最后一个单词以及用于剪切和粘贴弹出窗口的选项。

我希望Enter键的行为方式适用于“Go”,“Send”和“Next”。

1 个答案:

答案 0 :(得分:0)

我有类似的问题。

如果您想输入“DONE”和“NEXT”,请使用

long eventTime = SystemClock.uptimeMillis();
KeyEvent eventDOWN  = new KeyEvent(eventTime, eventTime,
 KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER, 0, 0,
 KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
 KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE
 | KeyEvent.FLAG_EDITOR_ACTION);

KeyEvent eventUP = new KeyEvent(SystemClock.uptimeMillis(), eventTime,
 KeyEvent.ACTION_UP, KeyEvent.KEYCODE_ENTER, 0, 0,
 KeyCharacterMap.VIRTUAL_KEYBOARD, 0,
 KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE
 | KeyEvent.FLAG_EDITOR_ACTION);