gpt4 book ai didi

xamarin.forms - Xamarin 中的 FontAwesome 形成 UWP

转载 作者:行者123 更新时间:2023-12-04 01:38:46 25 4
gpt4 key购买 nike

我有一个在 Android 中使用 Fontawesome 的自定义渲染器。我正在遵循本指南 using font awesome in UWP使用自定义标签类型尝试让 Fontawesome 在 UWP 中工作。

public class FontAwesomeLabel: Xamarin.Forms.Label    {
public FontAwesomeLabel() {
switch (Device.RuntimePlatform)
{
case Device.UWP:
FontFamily = @"/Assets/FontAwesome.otf#FontAwesome";
break;
}
}
}

字体
FontAwesome Asset
被加载为 ttf 和 otf。我已经尝试了两种类型。他们 Assest 字体具有构建操作“内容”

mainView.Children.Add( new FontAwesomeLabel()
{Text = FaConstPool.FASearch ,FontSize = 40});

public static string FASearch = "\uf002";

仅适用于 Android 而不适用于 UWP

我看到一个奇怪的框,而不是 Android 预期的 Fontawesome 图标。

知道我做错了什么吗?

最佳答案

问题的解决方案原来是在UWP中,使用正确的字体家族名称。 Font Awesome 5 Free Solid而不仅仅是“FontAwesome”

 // FontFamily = @"/Assets/FontAwesome.otf#FontAwesome"; // incorrect font family name
FontFamily = @"/Assets/Fonts/FontAwesome.otf#Font Awesome 5 Free Solid";

对于任何对细节感兴趣的人:
我下载了一个字体编辑器来检查内部字体名称和字体系列名称。我错误地复制了使用类似/旧字体值的博客文章。实际内容见图片。

我有两种解决方案:
1) 共享代码/.netStandard Common项目中的自定义控件。
2) 自定义渲染器

方案一:自定义标签

public class FontAwesomeLabel: Xamarin.Forms.Label
{
public FontAwesomeLabel()
{
switch (Device.RuntimePlatform)
{
case Device.UWP:
// make sure the correct font family name is used. Check in a font editor
this.FontFamily = @"/Assets/Fonts/FontAwesome.otf#Font Awesome 5 Free Solid";
break;
}
}
}

解决方案 2:标准控件上的客户渲染器

[assembly: ExportRenderer(typeof(Label), typeof(FontAwesomeLabelRenderer))]
namespace Oxando.UWP.CustomRenderers
{
public class FontAwesomeLabelRenderer : LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
if (Control != null)
{
// on UWP be sure use the Font Family name.
// get a font editor and check the name, if it doesnt match UWP wont load it
if (FontAwesomeUtil.CheckIsFA(e.NewElement.Text))
{
Control.FontFamily = new FontFamily("/Assets/Fonts/FontAwesome.otf#Font Awesome 5 Free Solid");
}
}
}
}
internal static class FontAwesomeUtil
{
public static bool CheckIsFA(string text)
{
if (text.Length == 0) return false;
if (text.Length > 1 || text[0] < 0xf000) return false;
return true;
}
}

字体编辑器中显示的实际内部名称 Font Awesome 5 download as of Jan 2018

关于xamarin.forms - Xamarin 中的 FontAwesome 形成 UWP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48326233/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com