Xamarin.Android - android: fontFamily не работает - PullRequest
0 голосов
/ 31 мая 2018

Мне нужно изменить шрифт textView, используя android: fontFamily.Проблема в том, что это дает мне ошибки, и я не знаю, почему

Мой код:

  <TextView
                android:text="Arial font"
                android:textSize="8pt"
                android:fontFamily="@font/arial"
                android:layout_marginTop="4pt"/>

Я попробовал буквально все: добавил Arial.ttf в папку Assets, создал папку шрифтов вАктивы, пытались изменить свойства, пытались использовать «arial.ttf» вместо «arial» в Android: fontFamily, но ничего не помогло.

1 Ответ

0 голосов
/ 01 июня 2018

Поддержка только API-26 и выше:

  • Добавьте файлы шрифтов в каталог Resources/font

  • Для API-26 + поддержка только с использованием android:fontFamily - это нормально:

    android:fontFamily="@font/tastysushi"

Но ... для API с 16 по 28+ вам нужнонастроить / использовать библиотеку поддержки Android

Поддержка из API-16 +

  • Добавить пакет Xamarin.Android.Support.Compat (v26 или выше)

  • Добавьте пакет Xamarin.Android.Support.v7.AppCompat (v26 +), если вы используете fontFamily в макетах AXML (в противном случае вы можете программно назначить семейство шрифтов и использовать подклассы Activity)

  • Ваша активность должна быть подклассом AppCompatActivity, чтобы атрибут макета / на основе AXML app:fontFamily работал

  • Добавьте файлы шрифтовв каталоге Resources/font

     |-Resources
     |  |-font
     |  |  |-tastysushi.ttf
    
  • Необязательно, но удобно, создать XML-файл семейства шрифтов в каталоге Resources/font (должны быть определены оба пространства имен android и app)

    <!-- Resource/font/sushi.xml -->    
    <?xml version="1.0" encoding="UTF-8" ?>
    <font-family 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">
    <font
        android:fontStyle="normal"
        android:fontWeight="400"
        android:font="@font/tastysushi"
    
        app:fontStyle="normal"
        app:fontWeight="400"
        app:font="@font/tastysushi"
    />
    

    Примечание: YВы также можете добавить жирный и курсивный элементы font к семейству шрифтов ... и назначить каждому отдельный файл шрифта из того же семейства шрифтов ...

  • В верхнем элементевашего файла макета добавьте пространство имен app::

    xmlns:app="http://schemas.android.com/apk/res-auto"

  • Теперь атрибут fontFamily должен использоваться для использования пространства имен app:

    app:fontFamily="@font/sushi"

Примечание. @font/ может ссылаться как на фактический файл шрифта, так и на файл семейства шрифтов на основе xml

Примечание.встраивать шрифты в стили, чтобы вам не приходилось заполнять каждый элемент AXML семейством шрифтов ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...