android webview 显示不出来

本文介绍了解决WebView在ScrollView中显示不全的问题,通过设置WebSettings的各项参数实现内容自适应高度,并确保了JavaScript接口的安全调用。

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

1 webview 使用 loadDataWithBaseURL 方法的时候是没有问题,但是在ScrollView下边使用的时候,在小米手机显示不了;

2 在webview 设置固定高度的时候在ScrollView是正常的,但是一般我们并不清楚高度是多少,那么解决的方法是

	   WebSettings ws = reservedView.wv_web.getSettings();
        ws.setAppCacheEnabled(true);//启用localstorage本地存储api
        ws.setLightTouchEnabled(true);//启用选中功能
        ws.setDomStorageEnabled(true);//启用dom存储(关键就是这句),貌似网上twitter显示有问题也是这个属性没有设置的原因
        ws.setDatabaseEnabled(true);//启用html5数据库功能
        ws.setTextSize(WebSettings.TextSize.NORMAL);//通过设置WebSettings,改变HTML中文字的大小 (使用后字体变大)
        ws.setJavaScriptEnabled(true);//设置js可用

        //  WebView中Http和Https混合问题
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            ws.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
        }
        //主要方法
        reservedView.wv_web.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                reservedView.wv_web.loadUrl(url);
                return true;
            }

            @Override
            public void onPageFinished(WebView view, String url) {
            //这里必须是这样的
                reservedView.wv_web.loadUrl("javascript:App.resize(document.body.getBoundingClientRect().height)");
                super.onPageFinished(view, url);

            }

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
            }

            @Override
            public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
                super.onReceivedError(view, request, error);
            }
        });
        reservedView.wv_web.addJavascriptInterface(this, "App");

        reservedView.wv_web.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
        reservedView.wv_web.setVerticalScrollBarEnabled(false);
        reservedView.wv_web.setVerticalScrollbarOverlay(false);
        reservedView.wv_web.setHorizontalScrollBarEnabled(false);
        reservedView.wv_web.setHorizontalScrollbarOverlay(false);

重写resize方法

  @JavascriptInterface
    public void resize(final float height) {
         runOnUiThread(new Runnable() {
            @Override
            public void run() {
                int h = (int) (height * getResources().getDisplayMetrics().density);
                reservedView.wv_web.setLayoutParams(new LinearLayout.LayoutParams(getResources().getDisplayMetrics().widthPixels,
                        h+40));
            }
        });
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙之吻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值