MAUI自定义字体Windows正常显示,Android模拟器不生效求助
MAUI自定义字体Android模拟器不生效的排查方案
检查字体文件的生成操作
Windows平台默认Content即可,但Android需要确保字体文件的生成操作是AndroidAsset。可以右键字体文件→属性查看,或者直接编辑csproj确认配置:<ItemGroup> <!-- 推荐用MauiFont统一配置,它会自动适配多平台 --> <MauiFont Include="Resources\Fonts\YourFont.ttf" /> <!-- 若MauiFont不生效,可单独指定Android的生成操作 --> <AndroidAsset Include="Resources\Fonts\YourFont.ttf" /> </ItemGroup>核对字体声明与引用的一致性
- 在
MauiProgram.cs注册字体时,确认别名和文件名无大小写错误(Android区分大小写):builder.ConfigureFonts(fonts => { // 第二个参数是自定义别名,确保和XAML里的引用一致 fonts.AddFont("YourFont.ttf", "CustomFont"); }); - XAML中引用时使用注册的别名,而非直接文件名:
<Label Text="测试自定义字体" FontFamily="CustomFont" />
- 在
清除Android模拟器缓存
Android模拟器的资源缓存容易导致新字体不加载,执行以下操作:- 卸载模拟器中的应用,重新部署项目
- 进入模拟器设置→应用→你的应用→存储→清除数据
- 直接重启模拟器
验证字体文件兼容性
部分字体可能存在平台兼容问题:- 用字体工具(如FontForge)检查字体是否包含完整的字符集和Android兼容的字体表
- 尝试将字体转换为OTF格式后重新导入项目测试
- 换用已知兼容的开源字体(如思源黑体)验证是否是字体本身的问题
排查Android资源压缩配置
若开启了Android资源压缩,可能会误删字体文件:- 编辑
Platforms\Android\Properties\AndroidManifest.xml,确认是否开启了资源压缩 - 若开启,在
Platforms\Android\proguard-rules.pro中添加规则保留字体相关类:-keep class android.graphics.Typeface { *; } -keep class androidx.core.graphics.TypefaceCompat { *; } - 或者直接在csproj中禁用资源压缩:
<AndroidEnableResourceCompression>false</AndroidEnableResourceCompression>
- 编辑
内容的提问来源于stack exchange,提问作者CleverWolf
相关产品推荐
相关产品推荐

