日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Android webView字體突然變小的原因及解決

瀏覽:157日期:2022-09-20 13:24:20
背景

最近,端內在做 webView 統一的時候,個性簽名中的 WebView 替換為 CustomWebView 之后,發現字體突然變小。

一開始不知道是什么原因,通過二分法查找最近的提交,排查之后,發現是 SignatureWebView 的繼承關系從 WebView 修改為 CustomWebView。revert 之后就正常了。

于是,我問自己,為什么會這樣呢?

原因分析

我們知道,WebViewSetting 里面是可以修改 WebView 的一些默認設置的。

閱讀官方文檔,發現 setLoadWithOverviewMode,setUseWideViewPort 這兩個方法看起來跟 WebView 縮放相關。

于是嘗試把 setLoadWithOverviewMode 改為 false,很神奇,竟然正常了。

setLoadWithOverviewMode

這個方法的作用,簡單來說,就是是否根據屏幕寬度自適應

Sets whether the WebView loads pages in overview mode, that is, zooms out the content to fit on screen by width. This setting is taken into account when the content width is greater than the width of the WebView control, for example, when getUseWideViewPort() is enabled. The default is false.

developer.android.com/reference/a…

這個問題解決之后,我心中又有這樣的疑問,為什么別的地方沒有問題,只有個性簽名這里的 WebView 有問題。

帶著這個疑問,我再次去瀏覽代碼,發現個性簽名里面 Webview 加載的網頁,是自己拼接的 html。debug 之后,發現網頁代碼大概是這樣的

<span style='word-wrap:break-word;font-family:system-ui;font-size:16px;color:#888888;'>Https://www.baidu.com</span>

可以看到里面字體的單位是 px,跟 Android 的 dp px 有點像,是不是沒作屏幕適配?

搜索發現 Web 網頁的代碼適配單位是 rem,有點類似于 dp。

Web 網頁在適配分辨率的時候,通常會設置 viewport 屬性

于是我嘗試在代碼里面加了這樣的代碼,發現 SignatureWebView 顯示個性簽名又正常了。

parsedHtml += '<meta name='viewport' content='width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no,viewport-fit=cover'>';

Web 網頁字體的適配規則,這里就不班門弄斧了,有興趣的可以自行搜索。

端內其他地方排查

我們知道,加載自定義 html,通常需要調用 loadDataWithBaseURL 方法,查看端內調用的地方,發現其他都是正常的。只有這個奇葩 SignatureWebView ,自己拼接的 html 沒有加 viewport 屬性,進行適配

總結 如果 html 是自己拼接的,并且像素是 px,不要設置 WebViewSetting 的 setLoadWithOverviewMode ,setUseWideViewPort(默認屬性是 false),否則字體可能顯示不正常,偏大或者偏小 如果 html 是自己拼接的,并且像素是 px,當我們設置 WebViewSetting 的 setLoadWithOverviewMode ,setUseWideViewPort 為 true(根據屏幕自適應),那么我們需要設置 html 的 viewport 規則,否則可能顯示不正常 html 如果是自己拼接的,需要注意適配規則,像個人簽名這種,用 webView 承載自己拼接的 html ,防止踩坑 WebView 字體常見的其他坑手機設置字體大小導致h5頁面在webview中變形

出現這個問題的原因是

默認瀏覽器中的內容是不受系統字體大小設置控制的,至少我遇到的幾臺手機都是這樣的情況。 某些機型 WebView 字體的大小是受手機系統字體大小控制的

這個通常有兩種解決方案。

Web js 網頁解決方案 一般,我們動態計算好html的font-size之后,我們就啥都不干了,就走了。 但是,我們現在知道了,我們設置的大小不一定是真實的大小,所以,我們需要在設置完字體大小之后,再去重新獲取一下html的font-size,看看實際的這個值,和我們設置的是不是一樣。 如果不一樣,就要根據比例再設置一次。

function htmlFontSize(){ var h = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); var w = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); var width = w > h ? h : w; width = width > 720 ? 720 : width var fz = ~~(width*100000/36)/10000 document.getElementsByTagName('html')[0].style.cssText = ’font-size: ’ + fz +'px'; var realfz = ~~(+window.getComputedStyle(document.getElementsByTagName('html')[0]).fontSize.replace(’px’,’’)*10000)/10000 if (fz !== realfz) { document.getElementsByTagName('html')[0].style.cssText = ’font-size: ’ + fz * (fz / realfz) +'px'; }}客戶端 WebView 禁止縮放

Android WebView 是可以通過 WebSettings 禁止網頁字體縮放的,可以通過 setTextZoom 方法解決

webview.getSettings().setTextZoom(100)小結

這篇文章主要是記錄 bug 的一個解決過程,技術含量不高,但是有一定的參考價值。尤其是 bug 的解決思路。

線上突然出現問題,一直找不出問題,嘗試一下二分法,逐步縮小范圍。 有時候,我們找到解決方案,卻不一定知道原因是什么,這時候,可以多問一下自己,背后的原因是什么?在排查的過程中,我們會逐漸培養自己的一套問題解決思路,聽起來很虛,但是確實存在的。 知道原因之后,我們可以繼續再進一步排查一下,項目中其他模塊是不是也存在這樣的問題。 以后要怎么規避之類問題?寫個 wiki 或者博客記錄一下

以上就是Android webView字體突然變小的原因及解決的詳細內容,更多關于Android webView字體突然變小的資料請關注好吧啦網其它相關文章!

標簽: Android
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产丝袜一区| 久久gogo国模啪啪裸体| 久久久久久网| 精品精品99| 韩日一区二区| 9999国产精品| 91精品国产乱码久久久久久久| 欧美aa在线观看| 欧美sss在线视频| 国产精品99免费看| 欧美日韩一二三四| 黄色在线一区| 在线精品国产亚洲| 欧美亚洲免费| 国产成人精品三级高清久久91| 国产精品3区| 欧美激情另类| 尤物精品在线| 欧美日韩亚洲一区在线观看| 黄色网一区二区| 免费av一区| 中文字幕一区二区三区在线视频| 日韩精品一级| 精品视频网站| 99免费精品| 蜜臀精品一区二区三区在线观看 | av一区二区高清| 精品在线播放| 视频一区二区三区中文字幕| 欧美成人基地| 欧美日韩日本国产亚洲在线| 国产美女视频一区二区| 青青草国产精品亚洲专区无| 日韩视频二区| 久久久天天操| 久久精品国产久精国产| 另类av一区二区| 亚洲伦乱视频| 免费在线成人| 欧美亚洲三级| **爰片久久毛片| 久久夜夜操妹子| 999在线观看精品免费不卡网站| 欧美~级网站不卡| 日韩一区欧美二区| 日韩精品诱惑一区?区三区| 日韩专区精品| 精品一区不卡| 亚洲一区欧美二区| 麻豆精品视频在线| 91久久中文| 欧美aⅴ一区二区三区视频| 国产91精品对白在线播放| 日韩精品a在线观看91| 成人福利视频| 亚洲精品自拍| 成人在线视频中文字幕| 久久亚洲一区| 欧美xxxx中国| 日韩高清二区| 天堂网在线观看国产精品| 亚洲+小说+欧美+激情+另类| 日韩在线二区| 日韩国产欧美在线播放| 日本久久成人网| 国产日韩一区二区三免费高清| 五月天久久久| 精品少妇一区| 日本中文字幕视频一区| 欧美日韩中文字幕一区二区三区| 国产极品嫩模在线观看91精品| 中文日韩在线| 久久久国产精品入口麻豆| 亚洲自拍另类| 另类中文字幕国产精品| 久久精品av麻豆的观看方式| 女主播福利一区| 欧美激情另类| 国产精品一区二区三区av麻| 亚洲欧美日韩专区| 免费在线小视频| 久久精品女人| 奇米狠狠一区二区三区| 亚洲欧美日韩在线观看a三区| 欧美片第1页| 精品国产欧美| 久久国产人妖系列| 婷婷综合五月| 色天使综合视频| 91亚洲人成网污www| 国产精品资源| 亚洲欧美日本国产| 伊人久久亚洲美女图片| 999国产精品永久免费视频app| 老鸭窝一区二区久久精品| 日韩精品第二页| 综合国产精品| 鲁大师成人一区二区三区| 精品一区在线| 久久高清免费| 久久人人精品| 久久婷婷久久| 日本一区二区高清不卡| 欧美xxxx性| 久久久人人人| 四季av一区二区凹凸精品| 国产日韩一区| 中文字幕一区二区三区日韩精品| 免费欧美一区| 国产亚洲精品久久久久婷婷瑜伽| 91精品一区国产高清在线gif | 国产伊人久久| 亚洲欧洲一区| 亚洲精品国产精品粉嫩| 少妇精品久久久一区二区| 美女久久久久| 高清av一区| 蜜臀91精品国产高清在线观看| 视频一区国产视频| 国产成人精品亚洲线观看| 欧美丰满日韩| 91欧美日韩| 国产精品丝袜在线播放| 午夜久久美女| 国产日韩1区| 国产精品网在线观看| 97久久亚洲| 国产乱子精品一区二区在线观看 | 日韩一区二区在线免费| 国产精品4hu.www| 国产精品qvod| 精品美女视频| 日韩免费在线| 欧美69视频| 中文日韩欧美| 日韩久久一区| 久久精品资源| se01亚洲视频 | 亚洲大全视频| 视频在线观看一区| 热久久免费视频| 亚洲人成网站在线在线观看| 天堂va欧美ⅴa亚洲va一国产| 婷婷视频一区二区三区| 国产日产精品_国产精品毛片 | 不卡一区2区| 亚洲97av| 欧美精品二区| 亚洲成人av观看| 国产精品日韩久久久| 日韩三级视频| 粉嫩av一区二区三区四区五区 | 香蕉视频成人在线观看| 天堂久久av| 久久精品国产在热久久| 亚洲成人精品| 蜜桃视频在线观看一区| 欧美伊人久久| 日本一二区不卡| 亚洲欧美日韩高清在线| 婷婷精品久久久久久久久久不卡| 国产精品白丝久久av网站| 91视频一区| 久久不射中文字幕| 国产精品毛片视频| 福利片在线一区二区| 欧美搞黄网站| 日本va欧美va欧美va精品| 国产成人精品亚洲线观看| 国产精品88久久久久久| 青青草91视频| 久久免费黄色| 日韩一区二区三免费高清在线观看| 美女视频免费精品| 夜夜嗨一区二区| 精品中文字幕一区二区三区| 在线 亚洲欧美在线综合一区| 国产精品三级| 丝瓜av网站精品一区二区| 精品久久亚洲| 国产精品视频首页| 亚洲精品一二| 国产精品毛片久久久| 午夜亚洲福利| 青草久久视频| 免费在线观看一区| 国产精品久久乐| 精品一区二区三区的国产在线观看| 国产精品极品在线观看| 亚洲精品自拍| 五月国产精品| 久久尤物视频| 精品国产美女a久久9999| 日韩超碰人人爽人人做人人添| 久久一区欧美| 精品久久久亚洲| 亚洲ww精品| 亚洲一级网站| 综合在线一区| 欧美私人啪啪vps|