我正在解决的问题比较复杂,但为了调查目的,我已将测试用例简化如下:
- 单个全屏活动 - 通过编程方式创建的 Web 视图,占据大约一半的水平屏幕空间、90% 的垂直空间,并在 onCreate 调用中通过以下方式添加到根视图中:
``` ViewGroup parent = (ViewGroup) getWindow().getDecorView().getRootView(); parent.addView(myWebView); ```
- 通过 `loadUrl("http://google.com")` 打开 Web 视图以访问 google.com。 - AndroidManifest.xml 具有属性:`"android:windowSoftInputMode="adjustPan"`。
当点击 Google 页面上的搜索框时,键盘弹出,但 Web 视图本身没有像 adjustPan 指示的那样向上移动。主活动还具有本地文本字段,当单击时,整个布局(包括 Web 视图)将向上移动,与预期相符。
这种行为在 Nexus 7 和 Galaxy Nexus 上的 4.2.2 版本中存在。
因此,问题是如何正确应用 windowSoftInputMode 属性 adjustPan 到 Web 视图实例,以便在显示软键盘时,整个 Web 视图都向上移动键盘所占用的垂直空间。
在尝试手动操作 onMeasure 布局之前,我想看看是否有一种一致/更好的方法来处理这个问题。浏览器显然正确处理了这种情况,因此不知道为什么 Web 视图无法处理这种情况。
需要注意的一点是,将 Web 视图全屏或作为单独的活动不是可能的选项,因为现有的架构无法更改。
- 单个全屏活动 - 通过编程方式创建的 Web 视图,占据大约一半的水平屏幕空间、90% 的垂直空间,并在 onCreate 调用中通过以下方式添加到根视图中:
``` ViewGroup parent = (ViewGroup) getWindow().getDecorView().getRootView(); parent.addView(myWebView); ```
- 通过 `loadUrl("http://google.com")` 打开 Web 视图以访问 google.com。 - AndroidManifest.xml 具有属性:`"android:windowSoftInputMode="adjustPan"`。
当点击 Google 页面上的搜索框时,键盘弹出,但 Web 视图本身没有像 adjustPan 指示的那样向上移动。主活动还具有本地文本字段,当单击时,整个布局(包括 Web 视图)将向上移动,与预期相符。
这种行为在 Nexus 7 和 Galaxy Nexus 上的 4.2.2 版本中存在。
因此,问题是如何正确应用 windowSoftInputMode 属性 adjustPan 到 Web 视图实例,以便在显示软键盘时,整个 Web 视图都向上移动键盘所占用的垂直空间。
在尝试手动操作 onMeasure 布局之前,我想看看是否有一种一致/更好的方法来处理这个问题。浏览器显然正确处理了这种情况,因此不知道为什么 Web 视图无法处理这种情况。
需要注意的一点是,将 Web 视图全屏或作为单独的活动不是可能的选项,因为现有的架构无法更改。