Android WebView规模行为不端

时间:2014-04-26 12:04:26

标签: android webview

我在Android中遇到WebView的奇怪问题。我编写了一个示例应用程序,它使用WebView显示一些测试消息。应用程序有两个活动,一个活动只包含一个按钮:当用户单击此按钮时,它会启动另一个活动,在WebView上显示测试消息。

我已将setInitialScale()的{​​{1}}设为150,并将WebViewsetLoadWithOverviewMode()设为setUseWideViewPort()

现在的问题是,通常false显示缩放尺寸为150的内容(正如我在我的应用中设置的那样),但有时会显示比例大于150的内容。我想知道为什么这是发生!

我对此做了一些调查,我的观察结果如下:

我覆盖了WebView中的onScaleChanged()功能。在正常情况下,在webViewClient上绘制内容之前,我正在使用值WebView进行onScaleChanged()回调。

问题发生时,我在绘制内容之前会收到两个[ oldScale : 2 and newScale 1.5]回调!首先,我获得了值为onScaleChanged()的{​​{1}}回调,之后又获得了值onScalechange()的另一个[ oldScale : 2 and newScale 1.5]回调,因此它将onScaleChanged()[ oldScale : 1.5 and newScale 2.0]一起绘制无论我在我的申请中提供的WebView,我都会给出2.0分。

仅当我将setInitialScale()设置为小于设备默认setInitialScale()比例的值时,才会出现此问题。

根据我的理解,每个设备都有WebView基于其显示属性的默认比例(例如,ldpi为0.75,hdpi为1.5等)

在我的设备中,webview的{​​{1}}为2,我将defaultScale设置为1.5(150)。通常webview在绘制之前将比例从2重置为1.5(即从默认值到新值),并且它可以正常工作。但是在将比例改为1.5之后的某个时候,它又回到了2,问题出现了。

我在这里粘贴示例代码,为什么会发生这种情况?是因为我的代码中存在任何实现问题吗?或者是Android的行为/错误/限制?我已经在Android 4.2中对此进行了测试。

setInitialScale()

布局

WebView

0 个答案:

没有答案