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