安卓Webview如何适应屏幕显示所有内容

9

您好,我有一个网页视图,希望它能够适应屏幕大小,这样用户就不需要横向或纵向滚动。

我之前进行了搜索,许多人建议使用以下方法,但是它只限制了宽度,用户仍然需要垂直滚动:

engine = (WebView) (findViewById(R.id.webView1));
engine.loadUrl(www.example.com); 
engine.getSettings().setLoadWithOverviewMode(true);
engine.getSettings().setUseWideViewPort(true);

我尝试了另一种方法,使用缩放方法,但它不起作用......我得到了窗口宽度(1024像素),网页内容宽度也是1024像素!! 所以缩放没有起作用....有没有办法获取正确的比例?

或者...还有其他方法吗?....谢谢!!

// get the window width and height
    Point outSize = new Point();
    getWindowManager().getDefaultDisplay().getSize(outSize);
    width = outSize.x;
    height = outSize.y;
    Log.i("Menuboard", "width: " + Integer.toString(width) + ", height: "
            + Integer.toString(height));

WebViewClient client = new WebViewClient() {

        public void onPageFinished(WebView view, String url) {
            int x = engine.getWidth();
            int y = engine.getHeight();

            Log.i("Menuboard", "web width: " + Integer.toString(x)
                    + ", height: " + Integer.toString(y));

            int scale1 = width * 100/x;
            int scale2 = height * 100/y;

            Log.i("Menuboard", "Scale1: " + Integer.toString(scale1)
                    + ", Scale2: " + Integer.toString(scale2));

            if (scale1 < scale2) {
                engine.setInitialScale(scale1);
                Log.i("Menuboard", "scale1");
            } else if (scale1 > scale2) {
                engine.setInitialScale(scale2);
                Log.i("Menuboard", "scale2: " + Integer.toString(scale2));
            }
        }
    };

    engine = (WebView) (findViewById(R.id.webView1));
    engine.loadUrl(string);
    engine.getSettings().setBuiltInZoomControls(true);
    engine.setPadding(0, 0, 0, 0);
            engine.setWebViewClient(client);

一些注意事项:

为了缩放Web视图:

engine = (WebView) (findViewById(R.id.webView1));
engine.loadUrl(www.example.com);
engine.getSettings().setBuiltInZoomControls(true);
engine.setPadding(0, 0, 0, 0);
engine.setInitialScale(50); // 0 - 100 where 100 is full scale

获取窗口宽度和高度:

Point outSize = new Point();
getWindowManager().getDefaultDisplay().getSize(outSize);
width = outSize.x;
height = outSize.y;

请查看以下链接:https://dev59.com/TVLTa4cB1Zd3GeqPYTZc#9756084 和 https://dev59.com/S2ct5IYBdhLWcg3wpfFc#11922862 以及 http://stackoverflow.com/questions/15894644/how-we-get-the-text-of-a-texview-to-be-justified-dynamically/15894704#15894704。 - Dhaval Parmar
1个回答

6

在Java中使用以下函数:

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

这些是用Kotlin编写的:

webView.settings.useWideViewPort = true
webView.settings.loadWithOverviewMode = true

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