4

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

例如,是否有一个配置文件可以在其中调整设置(即让设备相信它的屏幕更大,或一些类似的效果)?我完全知道这可能需要root,我对此很好。需要明确的是,我知道更改所有“违规”应用程序既不可行也不可取。

我意识到这不是一个严格的编程问题,但是很难将短语组合在一起,甚至可以获得一些合理的搜索结果。作为记录,我使用的是 Nexus 4,但问题基本上与设备和版本无关。

4

2 回答 2

6

根据文档

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

由于手机的屏幕空间较小,因此可能会使用户更难看到整个 UI 并能够正确操作它,尤其是如果您有一些“较高”的 UI 元素在横向模式下可能不适合屏幕。

更新:从操作系统级别的角度来看,解决方案位于(至少在 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)并调用inside 。setExtractViewShown(false)super

于 2013-01-05T00:31:18.460 回答
1

这个简单的解决方案在运行时对我有用

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

IME_FLAG_NO_EXTRACT_UI 是唯一的解决方案

对于 xml 布局,在编辑文本中添加这一行

android:imeOptions="flagNoExtractUi"

--- 还有其他选项,例如 onUpdateExtractingVisibility onCreateInputConnection

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

于 2019-02-15T10:29:33.763 回答