完美解決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,136評論 1 32
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,202評論 4 61
  • 這篇博客主要來介紹 WebView 的相關使用方法,常見的幾個漏洞,開發中可能遇到的坑和最后解決相應漏洞的源碼,以...
    Shawn_Dut閱讀 7,292評論 3 55
  • ¥開啟¥ 【iAPP實現進入界面執行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 6,510評論 0 17
  • 時間是一道轉輪,寒來暑往,兜兜轉轉,卻在不經意之間磨平了人的棱角。 年齡在不知不覺中開始奔二了,似乎以二開頭的年齡...
    IAmYou1998閱讀 738評論 2 3