You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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>
    
  • 核对字体声明与引用的一致性

    1. 在MauiProgram.cs注册字体时,确认别名和文件名无大小写错误(Android区分大小写):
      builder.ConfigureFonts(fonts =>
      {
          // 第二个参数是自定义别名,确保和XAML里的引用一致
          fonts.AddFont("YourFont.ttf", "CustomFont");
      });
      
    2. XAML中引用时使用注册的别名,而非直接文件名:
      <Label Text="测试自定义字体" FontFamily="CustomFont" />
      
  • 清除Android模拟器缓存
    Android模拟器的资源缓存容易导致新字体不加载,执行以下操作:

    • 卸载模拟器中的应用,重新部署项目
    • 进入模拟器设置→应用→你的应用→存储→清除数据
    • 直接重启模拟器
  • 验证字体文件兼容性
    部分字体可能存在平台兼容问题:

    • 用字体工具(如FontForge)检查字体是否包含完整的字符集和Android兼容的字体表
    • 尝试将字体转换为OTF格式后重新导入项目测试
    • 换用已知兼容的开源字体(如思源黑体)验证是否是字体本身的问题
  • 排查Android资源压缩配置
    若开启了Android资源压缩,可能会误删字体文件:

    1. 编辑Platforms\Android\Properties\AndroidManifest.xml,确认是否开启了资源压缩
    2. 若开启,在Platforms\Android\proguard-rules.pro中添加规则保留字体相关类:
      -keep class android.graphics.Typeface { *; }
      -keep class androidx.core.graphics.TypefaceCompat { *; }
      
    3. 或者直接在csproj中禁用资源压缩:
      <AndroidEnableResourceCompression>false</AndroidEnableResourceCompression>
      

内容的提问来源于stack exchange,提问作者CleverWolf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 00:45:05