Android Webview 初始化缩放问题

25

我在我的Android应用中使用了一个WebView,在应用启动时,网站放大了很多,我希望它能缩小以适应屏幕的宽度。目前我在我的activity中有以下代码:

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.setInitialScale(-1)。 - Ashraf Amin
7个回答

50
webview.getSettings().setLoadWithOverviewMode(true);    

这将导致 Webview 在初始时被缩小。

webview.getSettings().setUseWideViewPort(true);

当为false时,Webview将具有受限于其自身尺寸的视口;当为true时,Webview将具有普通视口(类似于桌面浏览器)。

编辑:随着Android KitKat中引入“Chrome Web View”,此代码可能无法使用。


2
我使用了 wv.getSettings().setBuiltInZoomControls(true);,参考 这个答案,将我的视图默认缩小并能够通过捏合手势进行缩放。 - Cameron
请参考此链接 https://code.google.com/p/android/issues/detail?id=92841,在 .xml 文件中,您应该为 webview 设置 android:layout_width="match_parent" 和 android:layout_height="match_parent"。如果您设置 android:layout_height="wrap_content",则在 Android 4.4 中,webview 将不会自动缩小。 - Anh Duy

19

这样缩小页面,使内容(在我这里是SVG)适合于屏幕大小,但不会产生不必要的空白。

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

初始比例对我来说很有效。现在第二页默认缩小了。 - Rohaitas Tanoli

9

试试这个:

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

setDefaultZoom()已被弃用。 - Kishore

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);

这是对我有效的代码,不需要最后一行。 - Mahmoud Mabrok

3

对于 Kit Kat 及更高版本的设备,您需要在 WebView 加载的 HTML 页面头部设置 viewport meta 标签,以防止默认的缩放行为。

<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 时都进行全屏缩小(我曾遇到这种情况),请使用以下方式进行缩放

webView.loadUrl(url)
webView.zoomBy(0.02f)

通过添加代码,我可以滚动视图,因此不会应用缩小功能。 - arun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接