缩放 WebView

Zooming a WebView

我不想更改 webView 的比例。这意味着,我知道如何启用捏缩放和类似的东西,其中只有页面的可见部分被更改 ("zoomed in"),如

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

我也不想更改字体大小,尽可能使用 getSettings().setTextZoom(zoom)

我想要实现的是在计算机的浏览器中尽可能实现相同的缩放,例如火狐。例如,您可以使用 CTRL + + 进行缩放。但它不会改变比例,也不会只改变字体大小。它缩放所有内容,同时重新排列页面内容以适应缩放浏览器 window 中可用的新 space。 android webView 可以实现类似的功能吗?


几张图片展示我想要的:

默认视图:

缩放视图:

字体缩放视图:

我想要的:

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

1。 JS 缩放

此选项将 JS 片段加载到 webView 的当前站点并更新当前正文的样式 属性。 Javascript 片段看起来像这样:

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

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

2。 DPI 变化

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

wm density [value]

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