缩小 WebView 初始比例
Scale down WebView initial scale
我想缩小我的 WebView
初始比例,例如以下视口配置:
<meta name="viewport" content="width=device-width, initial-scale=0.93, maximum-scale=0.93, user-scalable=no" />
但是这个视口被 WebView
忽略并渲染为全尺寸,这是我的 WebView
设置但没有成功:
mWebView.getSettings().setLoadWithOverviewMode(true);
mWebView.getSettings().setUseWideViewPort(true);
mWebView.setInitialScale(93);
有什么想法可以实现吗?
当您使用 user-scalable=no 时,缩放功能被禁用。如果您无权从网页源更改此设置,唯一可能的解决方案是在页面加载完成后使用 Javascript 更改视口内容 属性。为此,您必须设置 setJavaScriptEnabled(true);
webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
//Option 1: change the viewport content after the page is finished loaded and set initial-scale=0.93 and user-scalable=yes
view.loadUrl("javascript:document.getElementsByName('viewport')[0].setAttribute('content', 'width=device-width, initial-scale=0.93, maximum-scale=0.93, user-scalable=yes');");
//Option 2: change the body zoom style to the initial value you want eg: 0.93 (93%)
//view.loadUrl("javascript:document.body.style.zoom = "+String.valueOf(0.93)+";");
}
});
//load the url
webView.loadUrl(url);
作为替代方案,我们可以在此处尝试 CSS。
添加 class 以缩小并在完成或不再需要缩小后删除 class。
.scale-down {
transform: scale(0.93);
}
<html>
<body class="scale-down" >
<h2>I am scaled down to 93/100</h2>
</body>
</html>
您可以按照指定的方式注入 CSS
<body style="transform: scale(0.93);">
我想缩小我的 WebView
初始比例,例如以下视口配置:
<meta name="viewport" content="width=device-width, initial-scale=0.93, maximum-scale=0.93, user-scalable=no" />
但是这个视口被 WebView
忽略并渲染为全尺寸,这是我的 WebView
设置但没有成功:
mWebView.getSettings().setLoadWithOverviewMode(true);
mWebView.getSettings().setUseWideViewPort(true);
mWebView.setInitialScale(93);
有什么想法可以实现吗?
当您使用 user-scalable=no 时,缩放功能被禁用。如果您无权从网页源更改此设置,唯一可能的解决方案是在页面加载完成后使用 Javascript 更改视口内容 属性。为此,您必须设置 setJavaScriptEnabled(true);
webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient(){
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
//Option 1: change the viewport content after the page is finished loaded and set initial-scale=0.93 and user-scalable=yes
view.loadUrl("javascript:document.getElementsByName('viewport')[0].setAttribute('content', 'width=device-width, initial-scale=0.93, maximum-scale=0.93, user-scalable=yes');");
//Option 2: change the body zoom style to the initial value you want eg: 0.93 (93%)
//view.loadUrl("javascript:document.body.style.zoom = "+String.valueOf(0.93)+";");
}
});
//load the url
webView.loadUrl(url);
作为替代方案,我们可以在此处尝试 CSS。
添加 class 以缩小并在完成或不再需要缩小后删除 class。
.scale-down {
transform: scale(0.93);
}
<html>
<body class="scale-down" >
<h2>I am scaled down to 93/100</h2>
</body>
</html>
您可以按照指定的方式注入 CSS
<body style="transform: scale(0.93);">