Android中利用Jsoup让WebView清除Html标签并让图片适应大小并居中
? ? ? ?在App應用中,我們常常會加載一些新聞、通知等內容,這些內容很多來自于數據庫中存儲的HTML文本,里面的標簽雜亂不堪,且內容中又包括圖片等。
? ? ? ?處理這些內容,我們可以利用正則表達式來處理,但標簽太多,太雜,又想保留換行等格式,正則表達式寫起來麻煩,我是個懶人,于是有了更簡便的方法,就是利用Jsoup來處理。示例HTML代碼如下:
<p style="\"font-family:" simsun;="" font-size:="" 14px;\"=""> 記者從貴陽市旅游產業發展委獲悉,國慶黃金周臨近,爽爽貴陽一片秋意濃。即日起,市內各大景區景點紛紛推出各類特色國慶、中秋主題節慶活動,給市民游客帶來一個豐盛的節日盛宴。</p><p align="\"center\"" style="\"font-family:" simsun;="" font-size:="" 14px;="" text-align:="" center;\"=""><img id="\"6276046\"" title="\"\"" border="\"0\"" src="\"http://www.gywb.cn/xinwen/attachement/jpg/site2/20170927/3417eb9bc7b41b35c33901.jpg\"" sourcedescription="\"編輯提供的本地文件\"" sourcename="\"本地文件\"" data-bd-imgshare-binded="\"1\"" style="\"max-width:" 100%;="" height:="" 500px;="" width:="" 400px;\"="" /></p><p align="\"center\"" style="\"font-family:" simsun;="" font-size:="" 14px;="" text-align:="" center;\"=""> 圖為20萬盆菊花扮靚花畫小鎮,與市民游客一起迎國慶</p><p style="\"font-family:" simsun;="" font-size:="" 14px;\"=""> 長假期間,國家5A級旅游景區青巖古鎮將開展豐富多彩的民族文藝演出,演出內容包括滾山珠、錦雞舞等貴州非遺文化品牌節目。在狀元街,知名專家將現場傳授植物扎染及香囊制作工藝體驗。同時,貴州飯店國際會議中心將開通“青巖古鎮旅游直通車”,每天發車,貴州飯店至青巖古鎮28元/人/趟、大學城至青巖古鎮10元/人/趟。</p><p align="\"center\"" style="\"font-family:" simsun;="" font-size:="" 14px;\"=""><img id="\"6276048\"" title="\"\"" border="\"0\"" src="\"http://www.gywb.cn/xinwen/attachement/jpg/site2/20170927/3417eb9bc7b41b35c34502.jpg\"" sourcedescription="\"編輯提供的本地文件\"" sourcename="\"本地文件\"" data-bd-imgshare-binded="\"1\"" style="\"max-width:" 100%;="" height:="" 350px;="" width:="" 500px;\"="" /></p><p align="\"center\"" style="\"font-family:" simsun;="" font-size:="" 14px;="" text-align:="" center;\"=""> 圖為20萬盆菊花扮靚花畫小鎮,與市民游客一起迎國慶</p><p style="\"font-family:" simsun;="" font-size:="" 14px;\"=""> 秋高氣爽看10月,在烏當區花畫小鎮,20萬盆菊花上山,穿上盛裝迎接國慶中秋“雙節”。此次花展將從10月1日持續至11月30日,共兩個月。游客不僅可在園區“廊橋”欣賞菊花種類、食用藥用價值和有關菊花的文學作品等知識展板,還可在菊展的三個展銷區域,免費領取菊花茶一袋,每日限量300份。此外,還有優秀國畫及書法作品,讓游客近距離感受中國文化的博大精深;在菊花詩詞朗誦區域,園區將為游客提供一個文化展示與才藝交流的平臺。</p><p align="\"center\"" style="\"font-family:" simsun;="" font-size:="" 14px;="" text-align:="" center;\"=""><img id="\"6276052\"" title="\"\"" border="\"0\"" src="\"http://www.gywb.cn/xinwen/attachement/jpg/site2/20170927/3417eb9bc7b41b35c35804.jpg\"" sourcedescription="\"編輯提供的本地文件\"" sourcename="\"本地文件\"" data-bd-imgshare-binded="\"1\"" style="\"max-width:" 100%;="" height:="" 350px;="" width:="" 400px;\"="" /></p><p align="\"center\"" style="\"font-family:" simsun;="" font-size:="" 14px;="" text-align:="" center;\"=""> 圖為20萬盆菊花扮靚花畫小鎮,與市民游客一起迎國慶</p><p style="\"font-family:" simsun;="" font-size:="" 14px;\"=""> 雙節期間,修文縣將舉辦“野生動物園現場特惠+農業嘉年華現場特惠”、“漂流(上半程)+朵芳閣桃源河酒店”等活動,凡10月1日-7日期間游玩野生動物園的游客,用手機與動物園小動物自拍合影,以及赴農業嘉年華進行參觀的游客,用手機在現場自拍,經工作人員驗證后,桃源河漂流上半段票價可享受學生票價80元/人優惠。此外,中秋節10月4日當天,游客還可在朵芳閣參與免費領月餅、猜燈謎等活動。</p><p align="\"center\"" style="\"font-family:" simsun;="" font-size:="" 14px;="" text-align:="" center;\"=""><img id="\"6276054\"" title="\"\"" border="\"0\"" align="\"center\"" src="\"http://www.gywb.cn/xinwen/attachement/jpg/site2/20170927/3417eb9bc7b41b35c36305.jpg\"" sourcedescription="\"編輯提供的本地文件\"" sourcename="\"本地文件\"" data-bd-imgshare-binded="\"1\"" style="\"max-width:" 100%;="" height:="" 350px;="" width:="" 500px;\"="" /></p><p align="\"center\"" style="\"font-family:" simsun;="" font-size:="" 14px;="" text-align:="" center;\"=""> 圖為20萬盆菊花扮靚花畫小鎮,與市民游客一起迎國慶</p><p style="\"font-family:" simsun;="" font-size:="" 14px;\"=""> 貴陽市旅游產業發展委溫馨提醒廣大游客,出行前做好計劃,提早了解景區的開放情況和周邊交通、餐飲、天氣等。出游的過程中要注意安全,遵守景區的安全警示,游客在身體不適的情況下不要勉強進行旅游活動。通過網絡等自由組團進行戶外探險等活動時,要詳細了解組織者的身份、資質,目的地的氣候、團友的組成結構等信息,事先做好充分的準備。此外,游客還應遵守法律規定,做到文明出行。</p>?
? ? ? ?下面,我們就來一步步處理這些內容并顯示
?
? ? ? ?1、要在App的build.gradle引入Jsoup
implementation 'org.jsoup:jsoup:1.11.3'? ? ? ?2、設置WebView屬性
WebSettings webSettings = webView.getSettings();//獲取WebView的設置屬性webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);//把html中的內容放大到WebView等寬的一列中webSettings.setJavaScriptEnabled(true);//讓WebView支持jswebSettings.setSupportZoom(true); // 可以縮放webSettings.setBuiltInZoomControls(true); // 顯示放大縮小(這個不設置則縮放不起作用)webSettings.setDisplayZoomControls(false);//不顯示webview縮放按鈕(通過這個設置則可以不顯示那個縮放工具條)? ? ? ?3、添加一段css樣式以讓WebView按新的樣式顯示,在這段樣式中設定了字體大小,圖片大小以及水平居中
private static final String cssStart = "<html>" + "\n"+"<header>" + "\n"+"<style type=\"text/css\"> img {" +"width:90%;" +"height:auto;" +"display:block;" +"clear:both;" +"margin:auto" +"}" + "\n" +"body {" +"margin-right:15px;" +"margin-left:15px;" +"margin-top:15px;" +"font-size:21px;" +"}" + "\n" +"</style>" + "\n" +"</header>" + "\n" +"<body>" +"\n"; private static final String cssEnd = "\n"+"</body>"+"\n"+"</html>";? ? ? ?4、寫一個簡單的處理函數來清理HTML內容并保留換行格式以及添加新的css樣式
public static String getNewHtml(String htmlText){ try {htmlText = htmltext = Jsoup.clean(htmltext,Whitelist.basicWithImages()); htmltext = cssStart+htmltext+cssEnd;return htmltext;
} catch (Exception e) {
return htmltext;
}
}
? ? ? ?5、通過上述處理后,我們就可以直接用WebView來處理了
webView.loadData(getNewHtml(htmlText), "text/html; charset=UTF-8", null);顯示效果如下圖:
通過一系列的處理,我們已經將不同格式的HTML以及HTML中不同大小的圖片按照統一的標準來展示,同時保留了原來的換行格式。
注:Jsoup clena的參數說明
WhiteList中有幾個參數選項
1、none() ?
只保留文本,其他所有的html內容均被刪除
2、basic()?
允許的標簽包括: a, b, blockquote, br, cite, code, dd, dl, dt, em, i, li, ol, p, pre, q, small, strike, strong, sub, sup, u, ul,以及合適的屬性。標簽a指向的連接可以是 http, https, ftp, mailto,轉換完后會強制添加 rel=nofollow這個屬性。不允許包含圖片。
3、basicWithImages()
在basic的基礎上增加了圖片的標簽:img以及使用src指向http或https類型的圖片鏈接。
4、simpleText()
只允許: b, em, i, strong, u
5、relaxed()?
允許的標簽: a, b, blockquote, br, caption, cite, code, col, colgroup, dd, dl, dt, em, h1, h2, h3, h4, h5, h6, i, img, li, ol, p, pre, q, small, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, u, ul。結果不包含標簽rel=nofollow ,如果需要可以手動添加。
如果只想保留文本及換行,則clean的代碼換成如下:
String htmlText=Jsoup.clean(html, "", Whitelist.none(), new Document.OutputSettings().prettyPrint(false));其中白名單根據自己的需求進行變更。
?
轉載于:https://www.cnblogs.com/walkingblue/p/9013977.html
總結
以上是生活随笔為你收集整理的Android中利用Jsoup让WebView清除Html标签并让图片适应大小并居中的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 摘取作物
- 下一篇: 微信小程序image组件开发程序以及相关