1. 程式人生 > >WebView載入富文字(html)的方法

WebView載入富文字(html)的方法

挺久沒寫了,最近需要在Android上顯示富文字,看了網上有兩種方法,一種是用TextView一種是WebView,用TextView有一個問題,就是圖片的路徑問題,因為html文字中有可能給的圖片的路徑未必是全路徑,可能需要自己拼接,會比較麻煩,這裡使用WebView就能容易的解決,不過WebView就比較耗記憶體和流量了,下面看程式碼吧:

1.先給一段Html的string:

 private static final String IMAGE3 ="<p><font color=\\\"#ff0000\\\">富文字 this is a test</font></p>\n" + "<p><img src=\"/D/1/F/1_qq_24956515.jpg\" alt=\"Image\"/></p>" ;

2.設定好WebView:
private void initWebView(){
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setBuiltInZoomControls(true);
        webView.getSettings().setDisplayZoomControls(false);
        webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY); //取消滾動條白邊效果
        webView.setWebChromeClient(webChromeClient);
        webView.setWebViewClient(webViewClient);
        webView.getSettings().setDefaultTextEncodingName("UTF-8") ;
        webView.getSettings().setBlockNetworkImage(false);
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){
            webView.getSettings().setMixedContentMode(webView.getSettings().MIXED_CONTENT_ALWAYS_ALLOW);  //注意安卓5.0以上的許可權
        }
        webView.loadDataWithBaseURL("http://avatar.csdn.net",getNewContent(IMAGE3),"text/html", "UTF-8", null);
    }
3.關於圖片的適屏:需要用到jsoup jar包,請自行下載
importorg.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
private String getNewContent(String htmltext){

        Document doc=Jsoup.parse(htmltext);
        Elements elements=doc.getElementsByTag("img");
        for (Element element : elements) {
            element.attr("width","100%").attr("height","auto");
        }

        return doc.toString();
    }
4.最後提醒一下,別忘了設定訪問網路的許可權:
<uses-permission android:name="android.permission.INTERNET"/>
開始就是忘記了這個許可權,死活顯示不出圖片,哎,最後才發現,效果就是一段文字和圖片啦。