Android中fontFamily="cursive"在华为P20 Lite(Android 9)不生效问题咨询
解决Android 9华为P20 Lite上
android:fontFamily="cursive"不生效的问题 我之前在华为设备上也碰到过类似的字体配置不生效的情况,结合你的场景,给你梳理几个最可能的原因和对应的解决办法:
华为EMUI系统字体替换的锅
华为的EMUI(你的P20 Lite搭载的EMUI 9.x)默认会替换原生Android的部分系统字体库,cursive这个通用字体族名在华为的系统里并没有映射到对应的手写字体,而是直接指向了默认的标准字体。这是厂商定制系统常见的操作,和API等级达标与否没关系。先验证其他通用字体族是否生效
你可以临时把fontFamily改成"serif"或者"monospace"试试,如果这些也显示成标准文本,那说明系统确实替换了整个字体机制;如果其他通用族能正常显示,那就确定是cursive在这个设备上没有对应的预装字体。检查设备是否真的有cursive字体
你可以通过adb命令查看设备的系统字体列表:adb shell ls /system/fonts/看看输出里有没有带"cursive"或者手写风格的字体文件。如果找不到,那就是系统压根没预装这个字体,只能用自定义字体来解决。
最稳妥的解决办法:嵌入自定义手写字体
想要在所有设备上都保证字体显示一致,直接把字体文件嵌入应用是最好的选择,步骤很简单:- 在项目的
res目录下新建font文件夹,把你选好的手写字体文件(比如Dancing Script、Pacifico这类免费开源的手写字体)放进去; - 在TextView的XML里直接引用这个字体:
(这里假设字体文件名是android:fontFamily="@font/dancing_script_regular"dancing_script_regular.ttf)
- 在项目的
排除属性冲突或样式覆盖
另外可以临时去掉android:autoSizeTextType="uniform"试试,虽然概率不高,但某些属性组合可能会影响字体加载;同时检查一下你的App主题里有没有设置textAppearance这类会覆盖控件字体的样式,主题样式的优先级会高于控件本身的属性。
内容的提问来源于stack exchange,提问作者Wade Byron Profe
相关产品推荐
相关产品推荐

