Phonegap:在Android中显示键盘时调整Webview大小

6

我有一个与 Facebook 最新 Android 版本中 Feed/Chat 模态框类似的模态框 (拥有固定位置)。 我想要的看起来像这样:

enter image description here

所以当你聚焦在输入上时,键盘会打开并缩小 Webview。 它默认情况下不工作,我找不到任何解决方案。

我尝试将此偏好添加到 config.xml 中,但 adjustResize 不起作用,而 stateVisible 只会在我启动应用程序时打开键盘。

<preference name="android-windowSoftInputMode" value="stateVisible|adjustResize" />

这很奇怪。根据Android文档,adjustResize应该做到这一点:

The activity's main window is always resized to 
make room for the soft keyboard on screen.

我正在使用Phonegap 3.0,我有一台Nexus 5用于测试,它安装了KitKat系统。


我不知道config.html如何被拉入AndroidManifest.xml中,但是android-windowSoftInputMode不应该是android:windowSoftInputMode吗?你是否尝试过更改platforms/Android目录下的AndroidManifest.xml以包含<activity android:windowSoftInputMode="stateVisible|adjustResize"? - Matt Gaunt
2个回答

11

在我的使用PhoneGap 3.0创建的项目中,默认情况下应用是全屏的,当键盘弹出时,应用被隐藏且未重新调整大小。

我编辑了config.xml文件,并设置<preference name="fullscreen" value="false" />后,应用不再是全屏状态,当软键盘打开时,应用会自动调整大小以适合剩余的屏幕空间。


谢谢你的解决方案!它有效了。但我需要将我的应用程序设置为全屏模式。你知道另外一种方法吗?我不明白,难道默认情况下(我假设是adjustPan),不应该定位文本框并滚动,以便文本框始终可见吗? - GtEx
抱歉,没有找到其他解决方案。也许您可以直接在androidmanifest.xml中更改一些设置。 - QuickFix
嘿,我设置了这个,我可以看到设备的状态栏!此外,用户界面将会受到干扰! - byJeevan
我使用了这个配置来解决相反的问题:当键盘弹出时,我的应用会采用平板电脑的@media样式,因为Web视图重新调整大小并变成“横向”(在Nexus 4上) - 使用这个偏好设置,Web视图保持不变,表单不再改变。非常感谢!!!!! - Simona Adriani
这在iOS上似乎不起作用。有什么想法吗? - Prinsig

4

我找到了解决方案...针对特别是"sencha/phonegap/cordova"用户。

编辑Android清单文件中的Main Activity,添加此属性。

android:windowSoftInputMode="adjustNothing"

 <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:windowSoftInputMode="adjustNothing"  android:label="@string/app_name" android:launchMode="singleTop" android:name="com.company.appName.MainActivity" android:screenOrientation="portrait" android:theme="@android:style/Theme.Black.NoTitleBar">
<intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> 
</activity>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接