任何“谷歌键盘”悄悄话? API19

时间:2016-06-08 23:21:49

标签: android android-softkeyboard nexus-4

我有一个看似奇怪的问题,我非常感谢任何可能有用的建议。

我正在尝试通过测试各种屏幕外形来实现尽职调查,但是我在使用API​​级别19的模拟Nexus 4上的默认(AKA Google)键盘时遇到了问题.AFAIK根据在线规格,Nexus 4与API 17一起发布,所以在我看来19应该能够处理Nexus 4中的任何硬件。

我正在使用显示文档的应用程序,如果用户愿意,则允许在查看文档的同时输入有关文档的注释。默认情况下,大部分屏幕都是由文档视图拍摄的。但是当按下按钮以允许输入关于文档的注释时,将重新排列视图以允许软键盘与EditText视图一起显示以接受注释,并且仍然允许尽可能多的文档查看,尽可能方便,并提供滚动。

在默认的“肖像”方向中,我能够在我需要的时候偷偷摸摸地解决太多问题;但奇怪的是在“风景”方向,无论我如何限制它,屏幕键盘本身占据屏幕“高度”的一半,另一半显示一个单独的输入区域,几行高; “DONE”按钮分别显示在靠近右侧屏幕边缘的输入区域高度的一半处。

为了使软键盘和任何相关的输入区域尽可能小/简单,我为EditText提供了这些属性:

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

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

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

我甚至考虑过用XML等构建自定义键盘结构。但我的理解是Android不允许将键盘定义“私下”用于一个应用程序;相反,它需要用户批准自定义键盘描述作为用户的标准键盘,或者根本不允许使用自定义键盘。

我错过了什么吗?我没有为我的目的正确使用属性吗?为了获得理想的效果,我还需要做些什么吗?实际的Nexus 4是否像我描述的那样表现?或者仿真有问题吗?

我会非常感激任何有用的想法。

希望一些图片有助于说明问题。

默认文档查看模式: image of default document viewing mode

用户按下“MAKE NOTES”按钮后,记下记录模式。这是在用户按下EditText视图(显示提示字符串“要输入注释,按此处”)之前: image of note taking layout before pressing within EditText view

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

相反,当用户在EditText视图中按下时: image of after a press within the EditText view

1 个答案:

答案 0 :(得分:0)

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

您实际上可以为您的应用创建键盘,但您的用户会讨厌您。你不打算写其他公司没有花费多年的时间来写Swype功能,或者好的自动更正,或其他任何东西。

您似乎要描述的是一种称为提取视图的全屏编辑情境,其中键盘以横向模式接管整个屏幕。这是手机的标准Android体验,因为屏幕太少,无法让应用程序使用。这就是你所看到的,还是别的什么?如果是提取模式,请尝试将android:imeOptions="flagNoExtractUi"添加到textview