Android Webview 初始缩小

问题描述 投票:0回答:8

我在我的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");
java android webview zooming
8个回答
50
投票
webview.getSettings().setLoadWithOverviewMode(true);    

这将导致网络视图最初被缩小。

webview.getSettings().setUseWideViewPort(true);

Web 视图将有一个普通的视口(如桌面浏览器),当为 false 时,Web 视图将有一个受其自身尺寸限制的视口。

编辑:随着 Android KitKat 中“Chrome Web 视图”的引入,此代码可能不起作用。


19
投票

这会缩小,以便内容(在我的例子中是 SVG)适合屏幕,但不会产生不必要的空间。

webView.getSettings().setUseWideViewPort(true);
webView.setInitialScale(1);

9
投票

试试这个:

    webView.setInitialScale(50);
    webPlanSettings.setDefaultZoom(WebSettings.ZoomDensity.FAR);
    webPlanSettings.setUseWideViewPort(true);

7
投票
    //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);

3
投票

对于 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"/>

2
投票

使用 webSettings 类设置缩放级别...

webview.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);

0
投票

设置 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)
    

0
投票
如果您需要在每次加载网页时(无论是刷新还是新页面)将缩放级别重置为初始状态,您可以在

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 提供了初步解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.