美文网首页
用一小块webview显示网页里的二维码信息

用一小块webview显示网页里的二维码信息

作者: 聪葱忙忘 | 来源:发表于2020-06-28 15:13 被阅读0次

    使用场景:当你要在Activity或者Fragment显示一块网页中的二维码。因为某种原因,你是获得了这个网页的URL,而不是二维码的图像
    总的来说我们需要在这么一块webview上面显示网页里面的部分信息。

    代码

    设置webview不能滑动什么的,还有setJavaScriptEnabled(true)很关键

     webView = view.findViewById(R.id.webview);
            //设置滚动条不显示
            webView.setHorizontalScrollBarEnabled(false);//水平不显示
            webView.setVerticalScrollBarEnabled(false); //垂直不显示
            // 使WebView不可滚动
            webView.setOnTouchListener((v, event) -> (event.getAction() == MotionEvent.ACTION_MOVE));
            webView.getSettings().setJavaScriptEnabled(true);
    

    关键代码,在shouldInterceptRequest加载css样式。

    判断url是否以css结尾,如果是,就用我们构造的WebResourceResponse的来代替。

    webView.setWebViewClient(new WebViewClient(){
      @Nullable
                @Override
                public WebResourceResponse shouldInterceptRequest(WebView view, String url) {
                    Log.i(TAG,"shouldInterceptRequest "+url);
                    if(url.endsWith(".css")){
                        try {
                            return new WebResourceResponse("text/css","utf-8",getContext().getAssets().open("css/news.css"));
                        } catch (IOException e) {
                            e.printStackTrace();
                        }
                    }
                    return super.shouldInterceptRequest(view, url);
    
                }
            });
    }
    

    我们构造的WebResourceResponse是加载了Assets下的css/news.css,实际上这个是我们自己创建的,简单而言就是让网页加载自己定义的css,从而达到自己想要的显示效果。

    看看css文件

    body, html {
        margin: 0;
        padding: 0;
        height: 100%;
    }
    
    body{width:135px;height:135px;
        padding: 0px!important;
     }
    .impowerBox{
        margin: 0;
        padding: 0;
        line-height: 0;
        text-align: center;
        position: relative;
        width: 100%;
        z-index: 1;
    }
    .impowerBox .qrcode {width: 135px; height:135px; }
    .impowerBox .title {display: none;}
    .impowerBox .info {display: none;}
    .status_icon {display: none}
    .impowerBox .status {display: none;}
    

    我把一些不显示的设置成display: none,然后固定了它的大小等,实现了自己想要的显示效果。至于具体的效果,自己可以慢慢调试。

    相关文章

      网友评论

          本文标题:用一小块webview显示网页里的二维码信息

          本文链接:https://www.haomeiwen.com/subject/sdhwfktx.html