Как использовать пользовательский шрифт (любой внешний шрифт) в качестве встроенного ресурса в Xamarin Forms? - PullRequest
0 голосов
/ 17 апреля 2020

Я хочу использовать пользовательский внешний шрифт (Monotype Corsiva) в качестве встроенного ресурса в моем проекте Xamarin Forms. Я использую Xamarin.Forms версии 4.5.0.617

Я добавил MonotypeCorsiva.ttf " файл шрифта в свой проект и установил Действие сборки: встроенный ресурс в обозревателе решений.

Я добавил [assembly: ExportFont("MonotypeCorsiva.ttf", Alias = "MyFont")] в App.xaml.cs

Я использую его внутри Label на моей XAML странице:

<Label Text="Hello" FontFamily="MonotypeCorsiva" FontSize="Medium" />

Я все делаю правильно, я что-то упускаю?

Я получаю сообщение об ошибке:

В сборке UWP: в 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')'

Ответы [ 2 ]

1 голос
/ 17 апреля 2020

У меня все работает, только что обновил пакет NuGet Xamarin.Forms до версии 4.5.0.617 во всех проектах моего решения.

Ранее я обновлял пакет Xamarin.Forms NuGet до версия 4.5x только в общем проекте. Следовательно, эта ошибка возникла

System.TypeLoadException: 'Could not load type Xamarin.Forms.ExportFontAttribute'`

Теперь я обновил Xamarin.Forms NuGet во всех проектах (Android, iOS и UWP) в моем решении до версии 4.5x. Обратите внимание, что для использования внешних пользовательских шрифтов в качестве встроенного ресурса в Xamarin Forms требуется Xamarin.Forms версии 4.5x или выше . Для получения дополнительной информации обратитесь к этой ссылке

Теперь правильный способ сделать это:

  • Предположим, я хочу использовать Monotype Corsiva шрифт в моем проекте и использовать его в качестве встроенного ресурса.

  • Обновление Xamarin.Forms до версии 4.5.0.530 или новее во всех проектах в решении (Android, iOS, UWP и др. c.). Для этого в Solution Explorer , Щелкните правой кнопкой мыши Имя решения -> Управление пакетами NuGet для решения -> Обновите пакет Xamarin.Forms до 4.5x или позже -> Выберите все проекты и обновите.

  • Добавьте файл шрифта (.ttf) в общий проект.

  • Установить файл как Встроенный ресурс ( Щелкните правой кнопкой мыши Файл шрифта в Обозреватель решений -> Свойства -> Действие сборки: Установить как Встроенный ресурс ).

  • Добавить [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" также правильно.

  • Теперь запустите проект.

0 голосов
/ 17 апреля 2020

попробуйте следующим образом

<Label TextColor="#934293" Text="Swanky" FontSize="80">
    <Label.FontFamily>
        <OnPlatform x:TypeArguments="x:String">
            <On Platform="iOS">Cabin Sketch</On>
            <On Platform="Android">CabinSketch-Reg.ttf#Cabin Sketch</On>
        </OnPlatform>
    </Label.FontFamily>
</Label>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...