如何在 Xamarin Forms 中使用自定义字体(任何外部字体)作为嵌入资源?

2023-12-09

我想使用自定义外部字体(Monotype Corsiva)作为我的 Xamarin Forms 项目中的嵌入式资源。我正在使用 Xamarin.Forms 版本 4.5.0.617

我已经添加了“Monotype Corsiva.ttf”我的项目中的字体文件并设置构建操作:嵌入资源在解决方案资源管理器中。

我已经添加了[assembly: ExportFont("MonotypeCorsiva.ttf", Alias = "MyFont")] in 应用程序.xaml.cs

我在里面使用它Label in my XAML page:

<Label Text="Hello" FontFamily="MonotypeCorsiva" FontSize="Medium" />

我做的一切都正确吗?我错过了什么吗?

我收到错误:

In UWP Build: in MyApplication.UWP\App.xaml.cs enter image description here

在 Android 构建中

我遇到类似的错误MyApplication.Droid\MainActivity.cs

System.TypeLoadException: 'Could not resolve type with token 01000072 from typeref (expected class 'Xamarin.Forms.ExportFontAttribute' in assembly 'Xamarin.Forms.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null')'


我已经成功了,刚刚更新了 NuGet 包Xamarin.Forms在我的解决方案中的所有项目中更新为版本 4.5.0.617。

以前,我仅在共享项目中将 Xamarin.Forms NuGet Package 更新到版本 4.5x。因此遇到了这个错误

System.TypeLoadException: 'Could not load type Xamarin.Forms.ExportFontAttribute'`

现在,我已将解决方案中所有项目(Android、iOS 和 UWP)中的 Xamarin.Forms NuGet 更新为版本 4.5x。请注意,在 Xamarin Forms 中使用外部自定义字体作为嵌入式资源需要 Xamarin.Forms 版本 4.5x 或更高版本请参阅此链接了解更多信息

现在正确的方法是:

  • 假设我想使用蒙诺型科西瓦我的项目中的字体并将其用作嵌入式资源。

  • 将所有项目中的 Xamarin.Forms 更新到版本 4.5.0.530 或更高版本在解决方案中(Android、iOS、UWP 等)。为了做到这一点,在解决方案浏览器, 右键点击解决方案名称->管理解决方案的 NuGet 包 -> 将 Xamarin.Forms 包更新到 4.5x 或更高版本 -> 选择所有项目并更新。

  • 在共享项目中添加字体文件 (.ttf)。

  • 将文件设置为嵌入资源 (右键点击字体文件位于解决方案浏览器 -> 特性 -> 构建动作: Set as 嵌入资源).

  • Add [assembly: ExportFont("FontFileName.ttf", Alias = "MyFont")]在项目中任何类的任何命名空间之前。无需添加字体文件的完整路径。如果您添加新类并在启动命名空间之前添加上述代码,那就更好了。就像:

[assembly: ExportFont("MonotypeCorsiva.ttf", Alias = "MyFont")]
namespace MyApplication.Extensions
{    
    public class ExportFont
    {
        // You can have an empty class
        ... 
    }
}
  • 现在在任何 XAML 页面中使用它,就像
<Label Text="Hello" FontFamily="MonotypeCorsiva" FontSize="Medium" HorizontalOptions="CenterAndExpand" />
  • 您可以在 XAML 代码中使用别名或字体名称。FontFamily = "MyFont"也是正确的。

  • 现在运行该项目。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Xamarin Forms 中使用自定义字体(任何外部字体)作为嵌入资源? 的相关文章

随机推荐