我在Android中遇到WebView
的奇怪问题。我编写了一个示例应用程序,它使用WebView
显示一些测试消息。应用程序有两个活动,一个活动只包含一个按钮:当用户单击此按钮时,它会启动另一个活动,在WebView
上显示测试消息。
我已将setInitialScale()
的{{1}}设为150,并将WebView
和setLoadWithOverviewMode()
设为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