电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

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

瀏覽:80日期: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
相關文章:
主站蜘蛛池模板: 生物除臭剂-除味剂-植物-污水除臭剂厂家-携葵环保有限公司 | 锡膏喷印机-全自动涂覆机厂家-全自动点胶机-视觉点胶机-深圳市博明智控科技有限公司 | 钛合金标准件-钛合金螺丝-钛管件-钛合金棒-钛合金板-钛合金锻件-宝鸡远航钛业有限公司 | 数码管_LED贴片灯_LED数码管厂家-无锡市冠卓电子科技有限公司 | 高压贴片电容|贴片安规电容|三端滤波器|风华电容代理南京南山 | 智慧消防-消防物联网系统云平台 智能化的检漏仪_气密性测试仪_流量测试仪_流阻阻力测试仪_呼吸管快速检漏仪_连接器防水测试仪_车载镜头测试仪_奥图自动化科技 | 铝箔袋,铝箔袋厂家,东莞铝箔袋,防静电铝箔袋,防静电屏蔽袋,防静电真空袋,真空袋-东莞铭晋让您的产品与众不同 | 无菌实验室规划装修设计-一体化实验室承包-北京洁净净化工程建设施工-北京航天科恩实验室装备工程技术有限公司 | 聚合氯化铝价格_聚合氯化铝厂家_pac絮凝剂-唐达净水官网 | 光伏家 - 太阳能光伏发电_分布式光伏发电_太阳能光伏网 | 企典软件一站式企业管理平台,可私有、本地化部署!在线CRM客户关系管理系统|移动办公OA管理系统|HR人事管理系统|人力 | 振动时效_振动时效仪_超声波冲击设备-济南驰奥机电设备有限公司 北京宣传片拍摄_产品宣传片拍摄_宣传片制作公司-现像传媒 | 飞飞影视_热门电影在线观看_影视大全| 土壤有机碳消解器-石油|表层油类分析采水器-青岛溯源环保设备有限公司 | 宿松新闻网 宿松网|宿松在线|宿松门户|安徽宿松(直管县)|宿松新闻综合网站|宿松官方新闻发布 | VI设计-LOGO设计公司-品牌设计公司-包装设计公司-导视设计-杭州易象设计 | 一体化污水处理设备-一体化净水设备-「山东梦之洁水处理」 | 苏商学院官网 - 江苏地区唯一一家企业家自办的前瞻型、实操型商学院 | 安徽千住锡膏_安徽阿尔法锡膏锡条_安徽唯特偶锡膏_卡夫特胶水-芜湖荣亮电子科技有限公司 | 门禁卡_智能IC卡_滴胶卡制作_硅胶腕带-卡立方rfid定制厂家 | 开云(中国)Kaiyun·官方网站-登录入口 | 测试治具|过炉治具|过锡炉治具|工装夹具|测试夹具|允睿自动化设备 | 兰州牛肉面加盟,兰州牛肉拉面加盟-京穆兰牛肉面 | 哔咔漫画网页版在线_下载入口访问指引 | 电气控制系统集成商-PLC控制柜变频控制柜-非标自动化定制-电气控制柜成套-NIDEC CT变频器-威肯自动化控制 | 东莞画册设计_logo/vi设计_品牌包装设计 - 华略品牌设计公司 | pbt头梳丝_牙刷丝_尼龙毛刷丝_PP塑料纤维合成毛丝定制厂_广州明旺 | 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 金现代信息产业股份有限公司--数字化解决方案供应商 | 厦门ISO认证|厦门ISO9001认证|厦门ISO14001认证|厦门ISO45001认证-艾索咨询专注ISO认证行业 | 深圳离婚律师咨询「在线免费」华荣深圳婚姻律师事务所专办离婚纠纷案件 | 浙江华锤电器有限公司_地磅称重设备_防作弊地磅_浙江地磅售后维修_无人值守扫码过磅系统_浙江源头地磅厂家_浙江工厂直营地磅 | 亚克力制品定制,上海嘉定有机玻璃加工制作生产厂家—官网 | 耐高温电缆厂家-远洋高温电缆| 私人别墅家庭影院系统_家庭影院音响_家庭影院装修设计公司-邦牛影音 | 双齿辊破碎机-大型狼牙破碎机视频-对辊破碎机价格/型号图片-金联机械设备生产厂家 | 袋式过滤器,自清洗过滤器,保安过滤器,篮式过滤器,气体过滤器,全自动过滤器,反冲洗过滤器,管道过滤器,无锡驰业环保科技有限公司 | 中高频感应加热设备|高频淬火设备|超音频感应加热电源|不锈钢管光亮退火机|真空管烤消设备 - 郑州蓝硕工业炉设备有限公司 | 生物除臭剂-除味剂-植物-污水除臭剂厂家-携葵环保有限公司 | 扬子叉车厂家_升降平台_电动搬运车|堆高车-扬子仓储叉车官网 | 花纹铝板,合金铝卷板,阴极铝板-济南恒诚铝业有限公司 |