缩放 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 之前需要大约一秒钟)。
我不想更改 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 之前需要大约一秒钟)。