Android WebView本地Material Icons字体加载失败排查求助
兄弟,我之前也踩过WebView加载本地Material Icons的坑,帮你捋捋问题根源和解决方案!
问题根源拆解
先说说你遇到的两个现象的本质原因:
- 在线引入正常:因为Google CDN提供的字体路径是标准HTTP格式,WebView能自动解析加载,而且官方已经处理好了字体声明的所有细节,不会出错。
- 本地assets引入失败:大概率是踩了这几个常见坑:
- CSS里的字体路径写错了,必须用
file:///android_asset/开头的绝对路径,不能直接写assets/xxx.ttf @font-face里的font-family名称不对,Material Icons官方要求是'Material Icons'(带引号),而且font-weight必须设为400(对应regular字体)- WebView没开文件访问权限,比如没调用
settings.setAllowFileAccess(true) - 你放入assets的ttf文件可能损坏,或者不是官方的Material Icons Regular版本
- CSS里的字体路径写错了,必须用
核心需求解决方案:复用res/font下已配置的字体
既然你已经在res/font里有生效的字体(配了fonts.xml),但WebView没法直接访问res资源,这里给你两个靠谱的方案:
方案一:把字体转成Base64注入HTML(最简单,无额外配置)
这个方案不需要动资源或者加Provider,直接把res里的字体转成Base64字符串,嵌入到HTML的
相关产品推荐
相关产品推荐

