webview高度自适应图文详情

该博客介绍了如何在Android中实现WebView的高度自适应,通过设置WebView的WebSettings属性,包括开启JavaScript支持,调整布局算法和加载模式以适应不同屏幕大小。同时,自定义WebViewClient监听页面加载完成,通过测量WebView的宽度和高度来达到自适应的效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

private WebView webview=null;
@SuppressLint("SetJavaScriptEnabled")
private void initWebView(String html){
    if(webview==null){
        webview = new WebView(this);
        webview.setWebViewClient(new MyWebViewClient());
        WebSettings webSettings = webview.getSettings();
        if (Build.VERSION.SDK_INT >= 21) {
            webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
        }

        // 设置支持javascript脚本
        webSettings.setJavaScriptEnabled(true);

        // 设置此属性,可任意比例缩放
        webSettings.setUseWideViewPort(true);
        // 设置不出现缩放工具
        webSettings.setBuiltInZoomControls(false);
        // 设置不可以缩放
        webSettings.setSupportZoom(false);
        webSettings.setDisplayZoomControls(false);

        //自适应屏幕
        webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL);
        // 自适应 屏幕大小界面
        webSettings.setLoadWithOverviewMode(true);

        LinearLayout contLayout = (LinearLayout)contentView.findViewById(R.id.goods_cont);
        contLayout.addView(webview);
    }
    Logger.e(html);
    html="<html><head><meta charset=\"UTF-8\"><style type=\"text/css\">html,body{padding:0px;margin:0px;} p{margin:0px;}</style></head><body>"+html+"</body></html>";
    webview.loadDataWithBaseURL(null,html, "text/html",  "utf-8", null);
}
private class MyWebViewClient extends WebViewClient {
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        int w = View.MeasureSpec.makeMeasureSpec(0,
                View.MeasureSpec.UNSPECIFIED);
        int h = View.MeasureSpec.makeMeasureSpec(0,
                View.MeasureSpec.UNSPECIFIED);
        // 重新测量
        view.measure(w, h);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值