如何在 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 中使用自定义字体(任何外部字体)作为嵌入资源? 的相关文章

  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • ASP.NET Core 3.1登录后如何获取用户信息

    我试图在登录 ASP NET Core 3 1 后获取用户信息 如姓名 电子邮件 id 等信息 这是我在登录操作中的代码 var claims new List
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • C# - 当代表执行异步任务时,我仍然需要 System.Threading 吗?

    由于我可以使用委托执行异步操作 我怀疑在我的应用程序中使用 System Threading 的机会很小 是否存在我无法避免 System Threading 的基本情况 只是我正处于学习阶段 例子 class Program public
  • 为什么这个字符串用AesCryptoServiceProvider第二次解密时不相等?

    我在 C VS2012 NET 4 5 中的文本加密和解密方面遇到问题 具体来说 当我加密并随后解密字符串时 输出与输入不同 然而 奇怪的是 如果我复制加密的输出并将其硬编码为字符串文字 解密就会起作用 以下代码示例说明了该问题 我究竟做错
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • C++ 继承的内存布局

    如果我有两个类 一个类继承另一个类 并且子类仅包含函数 那么这两个类的内存布局是否相同 e g class Base int a b c class Derived public Base only functions 我读过编译器无法对数
  • 对于某些 PDF 文件,LoadIFilter() 返回 -2147467259

    我正在尝试使用 Adob e IFilter 搜索 PDF 文件 我的代码是用 C 编写的 我使用 p invoke 来获取 IFilter 的实例 DllImport query dll SetLastError true CharSet
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的

随机推荐