Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用Xamarin表单、iOS和Android使Font5正常工作_Xamarin_Xamarin.forms_Font Awesome - Fatal编程技术网

无法使用Xamarin表单、iOS和Android使Font5正常工作

无法使用Xamarin表单、iOS和Android使Font5正常工作,xamarin,xamarin.forms,font-awesome,Xamarin,Xamarin.forms,Font Awesome,我尝试了以下所有我能找到的教程,最密切地遵循了这一条: 但是所有出现的都是问号而不是图标,甚至上面的例子在我运行时也不适用 我的XML如下所示: <Label Text="&#xf249;" FontSize="20" Grid.Column="0" > <Label.FontFamily> <OnPlatform x:TypeArguments="x:String" Android="Fon

我尝试了以下所有我能找到的教程,最密切地遵循了这一条:

但是所有出现的都是问号而不是图标,甚至上面的例子在我运行时也不适用

我的XML如下所示:

<Label Text="&#xf249;"  FontSize="20" Grid.Column="0" >
   <Label.FontFamily>
      <OnPlatform 
         x:TypeArguments="x:String"
            Android="Font Awesome 5 Free-Regular-400.otf#Font Awesome 5 Free Regular" 
            iOS="Font Awesome 5 Free" />
   </Label.FontFamily>
</Label>

我现在有一些问题

  • 我需要将FontFamily设置为“FontAwesome”吗
  • 对于Android和iOS,我应该使用.ttf文件还是.otf文件
  • 对于iOS,我需要编辑info.plist吗?如果需要,我该如何编辑
  • 我应该像
    “;”
    或像
    “\uf004”
  • 对于Android和iOS d0,我需要将字体文件设置为“复制到输出目录”
  • 如何找到字体的名称?我将其设置为“Font Aweasome 5 Free”,但这只是复制了示例,我也无法使其工作
  • 我应该为iOS“”指定什么,应该是文件名减去.ttf(或.otf)?安卓怎么样

很抱歉,如果这些问题看起来很基本,但我只是在很长时间后无法显示图标。所有出现的都是一个?我似乎找不到任何地方解释如何为FontAwesome 5和Xamarin执行此操作,除了不起作用的示例。

FontAwesome 5比FontAwesome 4稍微复杂一点,因为您有3套字体。我已经为FontWoomes5Pro做了这件事

我需要将FontFamily设置为“FontAwesome”吗

对于iOS,如果您使用品牌集,则可以将
fontfamily
设置为
Font Awesome 5 Brands
,如果您使用其他3个品牌集中的任何一个,则可以将其设置为
Font Awesome 5 Pro
。目前,一次只能使用一套。我会给你另一个答案,这样你就可以在同一个应用程序中使用这3套

对于Android,这是我的开关:

switch (awesomeStyle)
            {
                case AwesomeStyle.Brands:
                    fontFile = "fa-brands-400.ttf#Font Awesome 5 Brands";
                    break;
                case AwesomeStyle.Light:
                    fontFile = "fa-light-300.ttf#Font Awesome 5 Pro";
                    break;
                case AwesomeStyle.Regular:
                    fontFile = "fa-regular-400.ttf#Font Awesome 5 Pro";
                    break;
                case AwesomeStyle.Solid:
                    fontFile = "fa-solid-900.ttf#Font Awesome 5 Pro";
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }
对于Android和iOS,我应该使用.ttf文件还是.otf文件

我使用.ttf文件

对于iOS,我需要编辑info.plist吗?如果需要,我该如何编辑

对。将以下密钥添加到
info.plist
文件中。只需在轻质、普通或实心之间添加一条字符串

<key>UIAppFonts</key>
<array>
    <string>fa-brands-400.ttf</string>
    <string>fa-light-300.ttf</string>
    <string>fa-regular-400.ttf</string>
    <string>fa-solid-900.ttf</string>
</array>
UIAppFonts
fa-brands-400.ttf
fa-light-300.ttf
fa-regular-400.ttf
fa-solid-900.ttf
我是否应该指定我的图标,如“" 或类似“\uf004”

在xaml中,使用
”;“
版本。在C#中,您使用的是
”\uf004“
版本

对于Android和iOS d0,我需要将字体文件设置为“复制到输出目录”

没有

如何找到字体的名称?我将其设置为“font Awesome 5 Free”,但这只是复制示例,我也无法使其正常工作

我为您提供了上面的名称。否则,您应该使用字体编辑器查找名称。在windows中,您可以在字体文件的属性中找到名称,但信息太多,您应该忽略标题的最后一个字(在“详细信息”选项卡中)

我应该为iOS=“”,指定什么?应该是文件名减去.ttf(或.otf)?Android=


请参见上文。

如果您想在Xamarin.IOS中使用一些很棒的字体文件,您必须知道ttf文件的'Postscript Name'是什么。请参见下图:

iOS通过“PostScript名称”加载任何字体,因此如果文件名和“PostScript名称”不同,我们应该小心使用

您应该下载字体查看器工具并检查此属性。并且必须将此名称指定给Xamarin.Forms或Xamarin.IOS控件的“FontFamily”或“font”属性

在Xamarin.Android中,操作系统不会通过“Postscript名称”加载字体文件,而是直接使用文件名

因此,我建议您将其重命名为“PostScript名称”,就像“FontAwesome5Pro Light.ttf”。然后您可以将“FontAwesome5Pro Light”指定给标签或按钮控件的“FontFamily”属性


然后你可以随心所欲地使用它。否则,你会看到一个小方框和一个问号。我不确定,但我想我在某个地方找到了你应该使用粗体字体的地方。你能尝试将此属性添加到你的标签中吗“我的答案解决了你的问题吗?请使用此链接作为c#参考刚才用此链接扯下了我的头发。现成的git项目在iOS中不起作用。您需要FontAttibutes=“Bold”使其正常工作,并引用info.plisty中的字体文件。您可以使用此网站为FontAttibutes编写C#代码