Android 2.2中的Web View在虚拟键盘弹出时窗口会上移

5
我正在使用Phonegap开发Android应用程序。在OS 2.1上一切正常,但是在OS 2.2上,当我们点击任何文本输入类型字段时,键盘出现并且整个窗口向上移动,文本输入类型字段变得不可见。有人能告诉我问题的确切原因,并且它是否可以使用JavaScript解决?如何停止Android 2.2上的窗口调整功能?
我在Text Input on android phone is not in view when the keyboard for webview comes up?上也找到了相同的问题,但没有解决方案。
5个回答

11

添加这个

android:windowSoftInputMode="adjustPan"

在AndroidManifest.xml文件中添加标签可以解决该问题。

对我来说,adjustPan不能将输入滚动到视图中。Android 4.3类似问题:http://stackoverflow.com/questions/17483881/webview-does-not-pan-on-android-web-application-with-phonegap - Nilesh

6

我尝试使用以下CSS属性,它在Android 2.2上有效:

html, body{overflow: hidden;}

不确定为什么有效,但确实有效...

备注:我在我的应用程序中使用了“iScroll”插件进行滚动。


那对我来说完美地解决了问题,而且我没有使用iScroll。我的主应用程序元素是使用-webkit-box在body中居中的。 - incidentist

2

我从未使用过PhoneGap,但我去了他们的网站,我了解到它仍然通过Eclipse和ADT工作;如果是这种情况,则可以通过在<activity>标记中添加以下内容来解决此问题,该标记是调用软键盘的活动所需的AndroidManifest.xml文件:

<activity android:windowSoftInputMode="adjustNothing"
          //other flags
/>  

实际上这似乎并不是这样的。我阅读的API文档实际上是针对Honeycomb的,这个标志在2.2中不存在。抱歉。最近我的所有工作都集中在平板电脑上,因为我最近一直在准备工作,所以忘记了我书签中的SDK版本。


1

当您的文本输入框获得焦点时,您可能需要启用此脚本以避免应用程序滚动 :)

function preventBehavior(e) 
{ 
  e.preventDefault(); 
};document.addEventListener("touchmove", preventBehavior, false);

点击文本框时,没有任何反应,虚拟键盘也不会出现。 - Bhupi

0

在Android 2.2上,当页面中有一个带有“transform”CSS属性的元素(例如transform: translate3d(0px, 0px, 0px);)时,会出现这种行为。删除这些声明可以解决我的问题。(overflow:hidden也是如此,但您无法再滚动应用程序)

PS:不幸的是,覆盖这些声明不起作用。


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