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

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();");

            }
        });
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,165评论 1 32
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,276评论 4 61
  • 这篇博客主要来介绍 WebView 的相关使用方法,常见的几个漏洞,开发中可能遇到的坑和最后解决相应漏洞的源码,以...
    Shawn_Dut阅读 7,349评论 3 55
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,701评论 0 17
  • 时间是一道转轮,寒来暑往,兜兜转转,却在不经意之间磨平了人的棱角。 年龄在不知不觉中开始奔二了,似乎以二开头的年龄...
    IAmYou1998阅读 756评论 2 3