В Android 8.0 (уровень API 26) появилась возможность использовать шрифты в XML-файлах в качестве ресурсов. Вы можете добавить файл font в папку res/font/, чтобы включить шрифты в ресурсы. Эти шрифты компилируются в файле R и автоматически становятся доступны в Android Studio. Доступ к ресурсам шрифтов можно получить с помощью типа ресурса font. Например, чтобы получить доступ к ресурсу шрифта, используйте @font/myfont или R.font.myfont.
Чтобы использовать шрифты в XML на устройствах с Android 4.1 (уровень API 16) и более поздних версий, используйте библиотеку поддержки 26.0. Подробнее о том, как использовать библиотеку поддержки…
Чтобы добавить шрифты в качестве ресурсов, выполните следующие действия в Android Studio:
- Нажмите правой кнопкой мыши на папку res и выберите New > Android resource directory (Создать > Каталог ресурсов Android). Откроется окно Новый каталог ресурсов.
- В списке Тип ресурса выберите шрифт и нажмите ОК.
Примечание. Название каталога ресурсов должно быть font.
Рисунок 1. Добавление каталога ресурсов шрифтов.
- Добавьте файлы шрифтов в папку
font.Приведенная ниже структура папок создает файлы
R.font.dancing_script,R.font.lobsterиR.font.typo_graphica.
Рисунок 2. Добавление файлов шрифтов в каталог
res/font. - Дважды нажмите на файл шрифта, чтобы посмотреть его в редакторе.
Рисунок 3. Предварительный просмотр файла шрифта.
Как создать семейство шрифтов
Семейство шрифтов – это набор файлов шрифтов, а также сведения о стиле и насыщенности. В Android можно создать новое семейство шрифтов в виде XML-ресурса и обращаться к нему как к единому целому, а не ссылаться на каждый стиль и вес как на отдельный ресурс. В этом случае система сама выберет подходящий шрифт в зависимости от стиля текста.
Чтобы создать семейство шрифтов, выполните следующие действия в Android Studio:
- Нажмите правой кнопкой мыши на папку
fontи выберите New > Font resource file (Создать > Файл ресурса шрифта). Откроется окно Новый файл ресурсов. - Введите название файла и нажмите ОК. Новый XML-файл ресурса шрифта откроется в редакторе.
- Каждый файл шрифта, стиль и атрибут веса должны быть заключены в элемент
<font>. В следующем примере XML показано, как добавить атрибуты, связанные со шрифтом, в XML-файл ресурса шрифта:<?xml version="1.0" encoding="utf-8"?> <font-family xmlns:android="http://schemas.android.com/apk/res/android"> <font android:fontStyle="normal" android:fontWeight="400" android:font="@font/lobster_regular" /> <font android:fontStyle="italic" android:fontWeight="400" android:font="@font/lobster_italic" /> </font-family>
Как использовать шрифты в XML-макетах
Используйте свои шрифты (один файл шрифта или шрифт из семейства) в объектах TextView или в стилях с помощью атрибута fontFamily.
Примечание. Когда вы используете семейство шрифтов, TextView автоматически переключается на файлы шрифтов из этого семейства.
Как добавить шрифты в TextView
Чтобы задать шрифт для TextView, выполните одно из следующих действий:
- В XML-файле макета задайте для атрибута
fontFamilyфайл шрифта, к которому вы хотите получить доступ.<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/lobster"/>
- Откройте окно Свойства, чтобы задать шрифт для элемента
TextView.- Выберите представление, чтобы открыть окно Свойства.
Примечание. Окно Свойства доступно только при открытом редакторе дизайна. В нижней части окна выберите вкладку Дизайн.
- Разверните свойство textAppearance и выберите шрифт из списка fontFamily.
-
Рисунок 4. Выбрать шрифт в окне Свойства.
- Выберите представление, чтобы открыть окно Свойства.
В окне предварительного просмотра макета Android Studio, показанном на рисунке 5 справа, можно посмотреть, как выглядит шрифт, заданный в TextView.
Рисунок 5. Предварительный просмотр шрифтов в макете.
Как добавить шрифты в стиль
Откройте файл styles.xml и задайте для атрибута fontFamily
файл шрифта, к которому хотите получить доступ.
<style name="customfontstyle" parent="@android:style/TextAppearance.Small"> <item name="android:fontFamily">@font/lobster</item> </style>
Как использовать шрифты программно
Чтобы получить шрифты программно, вызовите метод getFont(int) и укажите идентификатор ресурса шрифта, который хотите получить. Этот метод возвращает объект Typeface. Хотя система выбирает лучший стиль на основе информации о шрифтах, вы можете использовать метод setTypeface(android.graphics.Typeface, int), чтобы задать шрифт с определенными стилями.
Примечание. TextView
делает это за вас.
Kotlin
val typeface = resources.getFont(R.font.myfont) textView.typeface = typeface
Java
Typeface typeface = getResources().getFont(R.font.myfont); textView.setTypeface(typeface);
Как использовать библиотеку поддержки
Библиотека поддержки версии 26.0 поддерживает шрифты в XML на устройствах с Android 4.1 (уровень API 16) и более поздних версий.
Примечание. Если вы объявляете семейства шрифтов в макете XML с помощью библиотеки поддержки, используйте пространство имен app, чтобы шрифты загружались.
<?xml version="1.0" encoding="utf-8"?> <font-family xmlns:app="http://schemas.android.com/apk/res-auto"> <font app:fontStyle="normal" app:fontWeight="400" app:font="@font/myfont-Regular"/> <font app:fontStyle="italic" app:fontWeight="400" app:font="@font/myfont-Italic" /> </font-family>
Чтобы получить шрифты программно, вызовите метод ResourceCompat.getFont(Context, int) и укажите экземпляр Context и идентификатор ресурса.
Kotlin
val typeface = ResourcesCompat.getFont(context, R.font.myfont)
Java
Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont);