Как использовать значок из файла шрифта встроенного ресурса в Xamarin Forms - PullRequest
1 голос
/ 19 июня 2020

Я хочу использовать значки из Font Awesome в моем приложении Xamarin Forms. Я изучил несколько найденных мной руководств, но все еще не могу отобразить значки. Вот часть класса stati c, показывающая имя класса и пространство имен:

namespace NGIC_XAML.Constants
{
    public static class IconFontsFAProRegular
    {
        public const string GlassMartini = "\uf000";
        public const string Music = "\uf001";
        public const string Search = "\uf002";
        public const string Heart = "\uf004";
    }
}

Вот инструкция ExportFont в моем файле AssemblyInfo.cs:

[assembly: ExportFont("Font-Awesome-5-Pro-Regular-400.otf", Alias = "FAProRegular")]

Вот объявление пространства имен в моем файле XAML:

             xmlns:local="clr-namespace:NGIC_XAML.Constants"

И, наконец, вот тег, в котором я хочу использовать один из значков шрифта:

                    <Image
                        HeightRequest="44"
                        HorizontalOptions="Center"
                        VerticalOptions="Center"
                        WidthRequest="44">
                        <Image.Source>
                            <FontImageSource
                                FontFamily="FAProRegular"
                                Glyph="{x:Static local:IconFontsFAProRegular.Heart}"
                                Size="44"
                                Color="{StaticResource NGIC_Red}"  />
                        </Image.Source>
                    </Image>

Вывод

icon output

Кто-то обязательно спросит, поэтому вот установленные пакеты:

insatlled packages

Я бы хотел знать, что я делаю не так! У меня также не появляется intellisense, когда я ввожу имя пространства имен в ImageSource.

1 Ответ

0 голосов
/ 20 июня 2020

Вы должны установить семейство шрифтов как ресурс c stati и ссылаться на него в своем коде. В противном случае это не сработает.

                   <Image.Source>
                        <FontImageSource
                            FontFamily="{StaticResource FontAwesomeRegular}"
                            Glyph="{x:Static local:IconFontsFAProRegular.Heart}"
                            Size="44"
                            Color="{StaticResource NGIC_Red}"  />

Пример:

<OnPlatform x:Key="FontAwesomeBrands" x:TypeArguments="x:String">
    <On Platform="Android" Value="FontAwesome5Brands.otf#Regular" />
    <On Platform="iOS" Value="FontAwesome5Brands-Regular" />
    <On Platform="UWP" Value="/Assets/FontAwesome5Brands.otf#Font Awesome 5 Brands" />
</OnPlatform>

<OnPlatform x:Key="FontAwesomeSolid" x:TypeArguments="x:String">
    <On Platform="Android" Value="FontAwesome5Solid.otf#Regular" />
    <On Platform="iOS" Value="FontAwesome5Free-Solid" />
    <On Platform="UWP" Value="/Assets/FontAwesome5Solid.otf#Font Awesome 5 Free" />
</OnPlatform>

<OnPlatform x:Key="FontAwesomeRegular" x:TypeArguments="x:String">
    <On Platform="Android" Value="FontAwesome5Regular.otf#Regular" />
    <On Platform="iOS" Value="FontAwesome5Free-Regular" />
    <On Platform="UWP" Value="/Assets/FontAwesome5Regular.otf#Font Awesome 5 Free" />
</OnPlatform>
...