如何在项目中使用Font Awesome图标作为ImageButton的图标

7

我在使用Font Awesome图标在Xamarin应用程序中时遇到了问题,我想将其作为ImageButton的图标使用。但大多数教程都没有帮助我理解它的工作原理。


你遇到了什么具体的问题? - Jason
如何实现和使用Font Awesome图标 - GotStuckatm
2个回答

14
根据 Microsoft 文档 的解释:
  1. 首先需要有字体文件,我相信是 .ttf (或 .otf) 格式。
  2. 将其添加到您的共享项目中。
  3. 右键单击该文件并单击“属性”,然后将其生成操作设置为嵌入的资源
  4. 在您的 AssemblyInfo.csApp.xaml.cs 中使用友好的别名名称导出它:

[assembly: ExportFont("file-name.ttf", Alias = "FontAwesome")]

  1. 使用它:
<Label FontFamily="FontAwesome" Text="&#xf004;"/>

如果您需要图标的代码列表,请查看FontAwesome codes


如果您想要像按钮一样具有点击功能,则可以使用带有GestureRecognizers的标签:

<Label FontFamily="FontAwesome" Text="&#xf004;">
     <Label.GestureRecognizers>
         <TapGestureRecognizer Tapped="TapGestureRecognizer_Tapped"/>
     </Label.GestureRecognizers>
</Label>

更新

最好使用带有FontImageSource属性的ImageButton代替标签,这样您就可以像按钮一样具有单击功能。我发现有趣的是,您可以更改字形图标的颜色,无论是硬编码还是动态地根据所选主题,以下是示例:

<ImageButton>
    <ImageButton.Source>
        <FontImageSource FontFamily="FontAwesome"
                         Glyph="{x:Static fonts:IconFont.AddressBook}"
                         Color="{AppThemeBinding Dark=White,
                                                 Light=Black}"/>
    </ImageButton.Source>
</ImageButton>

您还可以定义一个静态类,其中包含const string属性,每个属性的值都是对应图标字形的代码,名称是其描述,这样您只需要提供描述而不是代码,就像我使用Glyph="{x:Static fonts:IconFont.AddressBook}"一样,它看起来会像这样:

 static class IconFont
    {
        public const string Ad = "\uf641";
        public const string AddressBook = "\uf2b9";
...
}

我邀请您跟随这个视频教程,并查看这个 GitHub 页面,它可以为您生成一个静态的 C# 类,该类是从您提交的字体图标文件开始生成的。


如果我想在ImageButton中将其用作图标,该怎么办? - GotStuckatm
有没有其他的方法可以使用它,比如在标签或者其他地方,让它看起来像一个按钮(可点击的)? - GotStuckatm
是的,请检查我的更新,其中包括GestureRecognizers。 - Cfun
1
谢谢,这非常有帮助。 - minimalist_zero
不要忘记在页面的XAML文件头部添加对IconFont类命名空间的引用。类似这样:xmlns:constants="clr-namespace:YOUR_APP_NAMESPACE"然后,我必须像这样写出Glyph属性: Glyph="{x:Static Member=constants:Constants.AddressBook}" - gadildafissh
显示剩余2条评论

0

FontAwesome 支持多个框架(Vue、React、Angular、WordPress、LESS、SCSS),但我不知道为什么他们没有为 Xamarin Forms 和 MAUI 提供支持。

我已经为 Xamarin Forms 和 MAUI 创建了自定义控件。

有关说明,请访问https://www.nuget.org/packages/Brushtail.FontAwesome.Mobile/

欢迎反馈意见。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接