WebView載入富文字(html)的方法
阿新 • • 發佈:2019-01-02
挺久沒寫了,最近需要在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:
3.關於圖片的適屏:需要用到jsoup jar包,請自行下載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); }
importorg.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements;
4.最後提醒一下,別忘了設定訪問網路的許可權: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(); }
<uses-permission android:name="android.permission.INTERNET"/>開始就是忘記了這個許可權,死活顯示不出圖片,哎,最後才發現,效果就是一段文字和圖片啦。