在使用软键盘的Android设备上,我想防止全屏键盘编辑视图(如下所示)在横屏模式下出现(即我只想看到软键盘本身和它后面的视图)。

我假设这可以使用InputMethodService上的setextractviewshow (false)方法实现,但我无法访问此的默认实例,也不想实现自定义输入法。

编辑添加:视图输入将不是一个TextView(它是一个自定义InputConnection实现的视图),所以android:imeOptions="flagNoExtractUi"将不会在这里工作。


当前回答

上面的答案帮助我找到了动态添加edittext的解决方案:

editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);

其他回答

另外,如果希望以编程方式组合多个imeOptions,可以使用|语法。

例如,为了在横屏中禁用全屏编辑视图,并将键盘中的“Next”键替换为“OK”(ACTION_DONE),你可以使用:

editText.setImeOptions(EditorInfo.IME_ACTION_DONE | EditorInfo.IME_FLAG_NO_EXTRACT_UI);

我终于回答了自己的问题:

提取UI(即全屏编辑模式)可以在输入连接连接时被禁用:

@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {

    outAttrs.imeOptions = EditorInfo.IME_FLAG_NO_EXTRACT_UI;

    // etc.
}

上面的答案帮助我找到了动态添加edittext的解决方案:

editText.setImeOptions(EditorInfo.IME_FLAG_NO_EXTRACT_UI);

在XML文件中的每个EditText中添加属性android:imeOptions="flagNoExtractUi"。

我的解决方案:

android:imeOptions="flagNoExtractUi|flagNoFullscreen"