我在我的android应用程序中使用webview,当应用程序启动时,网站放大了很多,我希望它缩小以适应屏幕的宽度。我目前的活动中有这个:
super.onCreate(savedInstanceState);
setContentView(R.layout.shop);
WebView webview;
webview = (WebView) findViewById(R.id.webview);
webview.setWebViewClient(new WebViewClient());
webview.getSettings().setJavaScriptEnabled(true);
webview.loadUrl("http://www.example.com");
webview.getSettings().setLoadWithOverviewMode(true);
这将导致网络视图最初被缩小。
webview.getSettings().setUseWideViewPort(true);
Web 视图将有一个普通的视口(如桌面浏览器),当为 false 时,Web 视图将有一个受其自身尺寸限制的视口。
编辑:随着 Android KitKat 中“Chrome Web 视图”的引入,此代码可能不起作用。
这会缩小,以便内容(在我的例子中是 SVG)适合屏幕,但不会产生不必要的空间。
webView.getSettings().setUseWideViewPort(true);
webView.setInitialScale(1);
试试这个:
webView.setInitialScale(50);
webPlanSettings.setDefaultZoom(WebSettings.ZoomDensity.FAR);
webPlanSettings.setUseWideViewPort(true);
//This the the enabling of the zoom controls
webView.getSettings().setBuiltInZoomControls(true);
//This will zoom out the WebView
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.setInitialScale(1);
对于 Kit Kat 及更高版本的设备,您需要在 WebView 加载的 HTML 页面的标题中设置视口元标记,以防止默认的放大行为。
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
使用 webSettings 类设置缩放级别...
webview.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
设置 WebView 设置,例如:
webView.settings.run {
builtInZoomControls = true
//hide +- zoom buttons
displayZoomControls = false
//zooms out the content to fit on screen by width
loadWithOverviewMode = true
//when page contains the viewport meta tag
useWideViewPort = true
}
但请考虑上面的缩放设置仅适用于 WebView 首次运行。
如果你想在每次加载WebView中的URL时完全缩小(我遇到过这种情况),请像这样使用zoomBy
webView.loadUrl(url)
webView.zoomBy(0.02f)
onPageFinished 方法中实现以下代码。这会将缩放设置为默认状态:
override fun onPageFinished(view: WebView?, url: String?) {
super.onPageFinished(view, url)
view?.post {
view.zoomBy(0.0101f) // Ensure the value is slightly greater than 0.01
}
}
这种方法可以确保变焦被有效地重置。特别感谢 George Vortelinos 提供了初步解决方案。