美文网首页
完美解决WebView加载HTML代码适配问题

完美解决WebView加载HTML代码适配问题

作者: 素颜的你 | 来源:发表于2019-03-10 18:44 被阅读0次
    1、WebView不会自动换行,它会把连在一起的字母当成一个表情或者单词,或者,当遇到一个完整的URL链接时,会强制把URL放在一行,导致WebView可以左右滑动

    解决方法:这中问题不是WebView设置能够解决的,我们需要改动HTML的代码,在返回的HTML代码前直接拼接下边代码:

      //就是有时候web view不会自动换行,它会把连在一起的字母或者表情当作是一个单词,
     // 直接显示在后面,不自动换行就造成了在webView中显示不全的现象。
            String pre="<body style=\"word-wrap:break-word;\"> </body>";
    
    2、修改客户端修改返回的HTML代码中的字体颜色:

    解决方法:通过js修改

    1、  //设置WebView启用js
    wb.getSettings().setJavaScriptEnabled(true);
    2、重写WebViewClient中的onPageFinished方法
    wb.setWebViewClient(new WebViewClient(){
                @Override
                public void onPageFinished(WebView view, String url) {
                    super.onPageFinished(view, url);
    
                    //修改字体颜色
                    view.loadUrl("javascript:function modifyTextColor(){" +
                            "document.getElementsByTagName('body')[0].style.webkitTextFillColor='#E6E6E6'" +
                            "};modifyTextColor();");
                }
            });
    
    
    3、HTML中图片太大时,会导致WebView可以左右滑动

    解决方法:通过js修改

    1、  //设置WebView启用js
    wb.getSettings().setJavaScriptEnabled(true);
    2、关闭自动适应
     wb.getSettings().setUseWideViewPort(false);
     wb.getSettings().setLoadWithOverviewMode(false);
    3、//重写WebViewClient中的onPageFinished方法
    wb.setWebViewClient(new WebViewClient(){
                @Override
                public void onPageFinished(WebView view, String url) {
                    super.onPageFinished(view, url);
                    //修改图片大小
                    int screenWidth = ScreenUtils.getScreenWidth(MessageDetailActivity.this);
                    String width = String.valueOf(screenWidth- DensityUtil.dp2px(MessageDetailActivity.this,50));
                    String width2=String.valueOf(DensityUtil.px2dp(MessageDetailActivity.this,screenWidth)-40);
    
                    String javascript = "javascript:function ResizeImages() {" +
                            "var myimg,oldwidth;" +
                            "var maxwidth = document.body.clientWidth;" +
                            "for(i=0;i <document.images.length;i++){" +
                            "myimg = document.images[i];" +
                            "if(myimg.width > "+width2+"){" +
                            "oldwidth = myimg.width;" +
                            "myimg.width ="+width2+";" +
                            "}" +
                            "}" +
                            "}";
                    view.loadUrl(javascript);
                    view.loadUrl("javascript:ResizeImages();");
    
                }
            });
    

    相关文章

      网友评论

          本文标题:完美解决WebView加载HTML代码适配问题

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