WebView的各種坑帖蔓,今天又讓我發(fā)現(xiàn)一個(gè)企软。
一庐扫、懵逼
最近公司項(xiàng)目中新聞模塊需要用WebView來(lái)加載,而且服務(wù)端返回的是String
類(lèi)型的html代碼仗哨,包含各種標(biāo)簽形庭,各種轉(zhuǎn)義符,一開(kāi)始直接用loadDataWithBaseURL()加載的時(shí)候厌漂,出現(xiàn)各種<
萨醒、>
,直接懵逼了苇倡,后面一查富纸,只是因?yàn)檗D(zhuǎn)義符的關(guān)系,那直接用String類(lèi)的replace()方法替換成對(duì)應(yīng)的<
旨椒、>
晓褪,就搞定了。
但是當(dāng)新聞里面的圖片大于屏幕寬度時(shí)综慎,會(huì)出現(xiàn)橫向滾動(dòng)條辞州,圖片也只顯示部分,向右滾動(dòng)屏幕才能看到剩余的圖片內(nèi)容寥粹,這樣極不方便变过,也不美觀。
網(wǎng)上搜索了一番涝涤,有種解決方案是直接把整個(gè)WebView的綻放比例變小媚狰,適配屏幕,這樣出來(lái)的圖片是適配屏幕了阔拳,但是文字就變得非常小崭孤,完全就是把PC端網(wǎng)頁(yè)塞進(jìn)手機(jī)的感覺(jué)了类嗤。
二、轉(zhuǎn)機(jī)
突然看到泡在網(wǎng)上的日子大哥的一篇文章WebView加載圖片超過(guò)屏幕大小的問(wèn)題辨宠,說(shuō)的是讓PC端在img標(biāo)簽里面配置一下最大寬度就可以解決了:
<style>
img{
max-width:80%;
height:auto;
}
</style>
三遗锣、再次懵逼
趕緊聯(lián)系服務(wù)端人員,結(jié)果被告知嗤形,這是使用某個(gè)框架做出來(lái)的效果精偿,沒(méi)辦法修改里面的樣式,這不又再次懵逼了嗎...
四赋兵、柳暗花明又一村
程序員都是打不死的蟑螂笔咽,只要有一線希望,就要努力去實(shí)現(xiàn)自己的價(jià)值霹期,不叶组,保住自己的飯碗。
上面泡網(wǎng)大哥的方法历造,其實(shí)就是給img設(shè)置樣式甩十。那服務(wù)端搞不定,就只能我們客戶(hù)端這邊來(lái)做了吭产,能不能我們直接給每個(gè)img標(biāo)簽都加上最大寬度的限制呢侣监?既然我們能把轉(zhuǎn)義符替換掉,那是不是也能用同樣的方法來(lái)加樣式呢垮刹?
五达吞、解決方案
答案是肯定的张弛,在我們獲取到的String類(lèi)型的html代碼里面荒典,我們已經(jīng)把轉(zhuǎn)義符replace成我們實(shí)際需要的字符,這時(shí)候我們就能取到img的標(biāo)簽了(<img>
)吞鸭,那只要加上如下的代碼寺董,就可以了:
htmlData = htmlData.replace("<img", "<img style='max-width:90%;height:auto;'");
原理就是上面分析的,在每個(gè)img標(biāo)簽里面刻剥,加上最大寬度和高度的控制遮咖,最大寬度比例可以根據(jù)需要自由設(shè)置。經(jīng)過(guò)測(cè)試造虏,暫時(shí)沒(méi)發(fā)現(xiàn)問(wèn)題御吞,如果大家有發(fā)現(xiàn)問(wèn)題,或者有其它的解決方案漓藕,歡迎隨時(shí)給我留言陶珠。
PS:歡迎關(guān)注SherlockShi博客