缩放WebView

时间:2018-04-24 16:49:09

标签: java android webview android-webview zoom

我不想改变webView的规模。这意味着,我知道如何启用捏缩放和类似的东西,只有页面的可见部分被改变("放大"),如同

webView.getSettings().setSupportZoom(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setDisplayZoomControls(false);

我也不想使用getSettings().setTextZoom(zoom)更改fontSize。

我想要实现的是在计算机的浏览器中尽可能相同的缩放,例如Firefox浏览器。在这里,您可以使用 CTRL + + 进行缩放。但它并没有改变比例,也没有改变它的字体大小。它可以缩放所有内容,同时重新排列页面内容以适应缩放浏览器窗口中可用的新空间。有没有可能与android webView?

一些图片显示我想要的内容:

默认视图:default

缩放视图:scaled

字体缩放视图:font zoomed

我想要的是什么:optimal

1 个答案:

答案 0 :(得分:0)

我找到了两种可能的解决方案:

1。 JS Zoom

此选项将JS片段加载到webView的当前站点并更新当前正文的样式属性。 Javascript代码段如下:

function Zoom(value)
{
    document.body.style.zoom = value;
}

我使用webView的loadUrl方法加载此代码段。 此方法的缺点是每次更新页面时都必须加载代码段。我通过在调用webView的onPageFinished时更新缩放来完成此操作。这样做的缺点是缩放不是直接应用,而是仅在页面加载完毕后才会应用。

2。 DPI改变

这是一个相当hacky的解决方案。它模拟新的显示大小,导致所有内容(以及因此webView的内容)调整大小。它是通过在linux子系统中执行以下命令来完成的:

wm density [value]

其中值是新的屏幕密度。它必须以root权限执行,这也是此解决方案的主要缺点。另一个缺点是它非常慢(在更新DPI之前需要大约一秒钟)。