Android 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.

这个问题解决之后,我心中又有这样的疑问,为什么别的地方没有问题,只有个性签名这里的 WebView 有问题

带着这个疑问,我再次去浏览代码,发现个性签名里面 Webview 加载的网页,是自己拼接的 html。debug 之后,发现网页代码大概是这样的

Https://www.baidu.com

可以看到里面字体的单位是 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 属性,进行适配

总结

===================================================================

  1. 如果 html 是自己拼接的,并且像素是 px,不要设置 WebViewSetting 的 setLoadWithOverviewModesetUseWideViewPort(默认属性是 false),否则字体可能显示不正常,偏大或者偏小

  2. 如果 html 是自己拼接的,并且像素是 px,当我们设置 WebViewSetting 的 setLoadWithOverviewMode ,setUseWideViewPort 为 true(根据屏幕自适应),那么我们需要设置 html 的 viewport 规则,否则可能显示不正常

  3. html 如果是自己拼接的,需要注意适配规则,像个人签名这种,用 webView 承载自己拼接的 html ,防止踩坑

WebView 字体常见的其他坑

=================================================================================

手机设置字体大小导致h5页面在webview中变形


出现这个问题的原因是

  1. 默认浏览器中的内容是不受系统字体大小设置控制的,至少我遇到的几台手机都是这样的情况。

  2. 某些机型 WebView 字体的大小是受手机系统字体大小控制的

这个通常有两种解决方案。

Web js 网页解决方案

  1. 一般,我们动态计算好html的font-size之后,我们就啥都不干了,就走了。

  2. 但是,我们现在知道了,我们设置的大小不一定是真实的大小,所以,我们需要在设置完字体大小之后,再去重新获取一下html的font-size,看看实际的这个值,和我们设置的是不是一样。

  3. 如果不一样,就要根据比例再设置一次。

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”;
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)

最后

javascript是前端必要掌握的真正算得上是编程语言的语言,学会灵活运用javascript,将对以后学习工作有非常大的帮助。掌握它最重要的首先是学习好基础知识,而后通过不断的实战来提升我们的编程技巧和逻辑思维。这一块学习是持续的,直到我们真正掌握它并且能够灵活运用它。如果最开始学习一两遍之后,发现暂时没有提升的空间,我们可以暂时放一放。继续下面的学习,javascript贯穿我们前端工作中,在之后的学习实现里也会遇到和锻炼到。真正学习起来并不难理解,关键是灵活运用。

资料领取方式:点击这里获取前端全套学习资料

css源码pdf

JavaScript知识点
。真正学习起来并不难理解,关键是灵活运用。

资料领取方式:点击这里获取前端全套学习资料

[外链图片转存中…(img-7J8HvRLT-1712396156847)]

[外链图片转存中…(img-wktKYWrE-1712396156847)]

  • 18
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值