任何

Any

我遇到了一个奇怪的问题,如果有任何可能有帮助的建议,我将不胜感激。

我正在尝试通过在各种屏幕尺寸上进行测试来进行尽职调查,但是当涉及到模拟 Nexus 4 上的默认(又名 Google)键盘时我遇到了问题使用 API 级别 19。据我所知,根据 on-line 规格,Nexus 4 是随 API 17 一起发布的,所以在我看来,19 应该能够处理任何硬件Nexus 4.

我正在使用一个显示文档的应用程序,如果用户愿意,允许在查看文档的同时输入有关文档的注释。默认情况下,大部分屏幕都被文档的视图占据。但是当按下按钮以允许输入有关文档的注释时,视图 re-arranged 允许显示软键盘以及 EditText 视图以接受注释并仍然允许尽可能多的文档尽可能方便地查看,并提供滚动。

在默认的 "portrait" 方向下,我可以轻松地找到我需要的东西,而不会出现太多问题;但奇怪的是 "landscape" 方向,无论我如何尝试限制它,on-screen 键盘本身占据了整个屏幕的一半 "height" 并占据了另一半,它显示了一个单独的输入区域,几行高; "DONE" 按钮单独显示在屏幕右边缘附近输入区域高度的一半左右。

为了尽可能保持软键盘和任何关联的输入区域 small/simple,我为 EditText 提供了这些属性:

android:inputType="text|textNoSuggestions|textShortMessage"
android:singleLine="true"

这是我的 styles.xml 文件中的主题:

<item name="android:windowSoftInputMode">stateUnchanged</item>

我什至考虑过在 XML 中构建自定义键盘结构等。但我的理解是 Android 不允许使用键盘定义 "privately" 仅适用于一个应用程序;相反,它需要用户批准自定义键盘描述作为用户的标准键盘,否则根本不允许使用自定义键盘。

我错过了什么吗?我是否没有出于我的目的正确使用属性?为了获得预期的效果,我还需要做些什么吗?实际的 Nexus 4 是否像我描述的那样运行?还是仿真有问题?

如果有任何有用的想法,我将不胜感激。

希望一些图片可以帮助说明问题。

当按下 "MAKE NOTES" 按钮时,我会重新排列内容。在我看来,控件大致位于左上象限, 文档视图放置在大致位于右上象限的明显较小的可滚动区域中;我要求显示键盘,它适合在那些东西下面的屏幕上。由于键盘确实适合,所以我不会期望 "extract" 视图;特别是因为当我得到这些模拟器屏幕快照时,我已经将 EditText 视图限制为一个文本行,所以我希望输入发生在适当的位置,在 EditView,就像在 "portrait" 方向上一样...

无法更改键盘的高度。键盘本身设置,在 InputMethodService 的 onComputeInsets class 中,结合 onCreateInputView 中返回的视图的高度。

你实际上可以为你的应用创建一个键盘,但你的用户会讨厌你。如果不花费其他公司拥有的多年时间,您将无法编写 Swype 功能、良好的自动更正或任何其他功能。

您所描述的似乎是一种称为提取视图的全屏编辑情况,其中键盘在横向模式下接管全屏。这是手机的标准 Android 体验,因为留给应用程序使用的屏幕太少了。那是你所看到的,还是其他东西?如果是提取模式,请尝试将 android:imeOptions="flagNoExtractUi" 添加到 textview.