为什么performEditorAction()总是执行IME_ACTION_NEXT,即使参数不正确



我正在开发一个包含Android输入法的辅助功能服务。重要的是要知道它不是应用程序(活动、视图等)的一部分。

使用某个命令,当我键入字母时,我希望停止在editText上书写。

我使用inputConnection将此行为的操作发送到编辑器,操作为:IME_action_DONE

//Inside public class myIME extends InputMethodService
boolean res = false;
InputConnection inputCon = getCurrentInputConnection();
if (null != inputCon)
{
    res = inputCon.performEditorAction(EditorInfo.IME_ACTION_DONE);
    //res = true, action executed but wrong behavior
}

由于未知的原因,行为是焦点将始终转到视图中的下一个元素,就像IME_ACTION_next的行为一样。

即使我这样做,这也会起到同样的作用:

inputCon.performEditorAction(987654321); //No existing action ID

问题是,为什么?

您是否尝试将以下内容添加到xml文件中的EditText
android:imeOptions="actionDone"
我有一个包含多个EditText的Layout,并且正在使用自定义键盘。调用"inputCon.performEditorAction(EditorInfo.IME_ACTION_DONE);"是我在输入文本后隐藏键盘的唯一方法。焦点停留在上次编辑的EditText上(光标闪烁,但未显示键盘)。

相关内容

  • 没有找到相关文章

最新更新