从用户的角度来看,禁用横向软键盘输入的全屏编辑视图



我正在寻找这个问题的答案,但是从用户的角度来看。也就是说,如果平板电脑显示正常的应用UI,即使键盘在横向模式下可见,是什么导致手机不这样做?我讨厌"全屏"编辑框,更希望看到应用程序正常UI的剩余部分(尽管可能会少一些可见;对于今天的大屏幕手机,仍然有"足够"的屏幕空间可用)。

例如,是否有一个配置文件可以调整设置(即使设备认为它的屏幕更大,或其他类似的效果)?我完全意识到这可能需要根,我对此没有意见。需要说明的是,我知道修改所有"违规"应用程序既不可行,也不可取。

我知道这不是一个严格意义上的编程问题,但是将短语组合在一起以获得一些合理的搜索结果是极其困难的。根据记录,我使用的是Nexus 4,但这个问题基本上与设备和版本无关。

根据文档:

IME_FLAG_NO_EXTRACT_UI:对于可能全屏的输入法,通常在横向模式下,这允许它们更小,并让部分应用程序显示在后面。尽管用户对应用程序的访问可能会受到限制,但可以使(大多数)全屏IME的体验不那么不和谐。请注意,当指定此标志时,IME可能无法设置为能够显示文本,因此它应该只在不需要的情况下使用。

因为手机的屏幕面积更小,这可能会让用户更难以看到整个UI并能够正确操作它,特别是如果你有一些"更高"的UI元素,这些元素可能不适合横向模式的屏幕。

Update:从操作系统级别的角度来看,解决方案位于(至少在ICS中)android/inputmethodservice/InputMethodService.java:2107:

/**
 * Called when the fullscreen-mode extracting editor info has changed,
 * to determine whether the extracting (extract text and candidates) portion
 * of the UI should be shown.  The standard implementation hides or shows
 * the extract area depending on whether it makes sense for the
 * current editor.  In particular, a {@link InputType#TYPE_NULL}
 * input type or {@link EditorInfo#IME_FLAG_NO_EXTRACT_UI} flag will
 * turn off the extract area since there is no text to be shown.
 */
public void onUpdateExtractingVisibility(EditorInfo ei) {
    if (ei.inputType == InputType.TYPE_NULL ||
            (ei.imeOptions&EditorInfo.IME_FLAG_NO_EXTRACT_UI) != 0) {
        // No reason to show extract UI!
        setExtractViewShown(false);
        return;
    }
    setExtractViewShown(true);
}

要删除此功能,您必须重写onUpdateExtractingVisibility(EditorInfo)并在不调用super的情况下调用setExtractViewShown(false)

这个简单的解决方案在运行时为我工作

editTxt.setImeOptions(editTxt.getImeOptions() | EditorInfo.IME_FLAG_NO_EXTRACT_UI);

IME_FLAG_NO_EXTRACT_UI是唯一的解决方案

用于XML布局在编辑文本

中添加这一行
android:imeOptions="flagNoExtractUi"

——还有其他选项,如onUpdateExtractingVisibilityonCreateInputConnection

但是通过以上选项,您可以灵活地选择是否显示全屏键盘布局

相关内容

  • 没有找到相关文章

最新更新