Android ICS WebView中的奇怪缩放行为

时间:2013-01-30 04:40:19

标签: android webview android-4.0-ice-cream-sandwich

我有一个应用程序,它在WebView中显示来自资源资产的html页面。选择WebView是为了允许页面上的导航链接,并且通过中断新页面请求并返回所需的本地资产,在WebView Client类中处理所有导航操作。包含WebView的活动支持纵向和横向,并且“onCreate”中配置了WebView(“setInitialScale”和“WebSettings”)。显示页面以适合宽度和垂直可滚动。这在ICS更新之前一直运行良好。

在ICS下,所选的初始页面仍然像以前一样显示,但显示的其他页面链接比屏幕宽度宽(并包括水平滚动条)。如果在加载初始页面时设备处于纵向或横向方向,则会发生这种情况。将设备旋转到横向并返回到纵向可以解决问题(导致重新加载活动,就像显示的页面是第一个一样),但是在纵向导航时导航回到上一页会导致它们的宽度再次超过设备显示,即使返回到正确显示的主页面。

这主要是一种烦恼 - 但不一致的行为令人担忧。不幸的是,还有其他一些与此代码相关的“调整”(主要用于重新调整html中的图像以适应屏幕并在方向更改时保留WebView滚动位置)。虽然这些可能是当前问题的根源,但其结果的快速日志输出显示它们正在按预期工作,这表明ICS WebView行为已发生变化。

我在没有找到任何直接引用的情况下搜索了问题的任何类似帖子,所以我的问题非常开放。有没有其他人在ICS WebView类中看到过这样的内容,或者我是否应该为更改的行为寻找其他来源?

更新

在消除了一行代码后几个小时(grrrr),我发现了问题。

在android api 14或更高版本下运行时,在视口固定为设备宽度时,使用“setInitialScale”将视图比例设置为大于100%的值时,WebView具有不可预测的行为(使用元标记名称=“viewport” html css中的“content =”width = device-width“。初始页面加载似乎与设备宽度有关,但后续页面加载可能会或可能不会使视口比请求更宽,几乎是随机的。

这可能是预期的行为,虽然不可预测性表明它不是(如果是,那么它是先前版本中的行为的修复)。

使用的代码是设置比例以允许用户在首选项中调整文本显示大小,页面图像的大小在加载页面之前被“固定”到代码中的值。这已被替换为将页面比例维持在100%,并使用“WebSettings.setDefaultFontSize”从用户的首选项设置文本大小,这已消除了渲染问题。

0 个答案:

没有答案