Использование собственного шрифта для всех текстов в моем приложении
Следуя этой процедуре, я хочу установить шрифт всего текста в приложении для Android на конкретное имя. Это не английский шрифт, поэтому я вставляю его в app\src\main\assets\fonts
и написал следующее в styles.xml
<item name="android:fontFamily">@fonts/my.ttf</item>
<item name="fontFamily">@fonts/my.ttf</item>
Однако после сборки и запуска приложения внутри android studio (эмулятор появляется) я вижу шрифт по умолчанию, а не указанный мной шрифт.
Кстати, в этом посте он использует @font
, Однако, если я пишу это, я вижу ошибку, что шрифт не найден. Путем изменения @fonts
, ошибка компиляции решена!
Чего здесь не хватает?
2 ответа
Если вы хотите переопределить шрифт для всех представлений, вы можете использовать этот подход:
public static Typeface overrideFont(Context context,
String defaultFontNameToOverride,
String customFontFileNameInAssets) {
try {
final Typeface customFontTypeface = Typeface.createFromAsset(context.getAssets(), customFontFileNameInAssets);
final Field defaultFontTypefaceField = Typeface.class.getDeclaredField(defaultFontNameToOverride);
defaultFontTypefaceField.setAccessible(true);
defaultFontTypefaceField.set(null, customFontTypeface);
return customFontTypeface;
} catch (NoSuchFieldException e) {
Logger.e(e);
return null;
} catch (IllegalAccessException e) {
Logger.e(e);
return null;
}
}
А затем в методе onCreate() вашего класса Application просто вызовите этот метод следующим образом:
TypefaceUtil.overrideFont(this,
"SERIF",
"fonts/CaviarDreams.ttf");
НЕ забудьте поместить ваш файл шрифта.ttf в папку активов
Создание семейства шрифтов
Семейство шрифтов - это набор файлов шрифтов, а также их стиль и вес. В Android вы можете создать новое семейство шрифтов в качестве ресурса XML и обращаться к нему как к единому модулю, вместо того чтобы ссылаться на каждый стиль и вес в качестве отдельных ресурсов. Делая это, система может выбрать правильный шрифт на основе стиля текста, который вы пытаетесь использовать.
Чтобы создать семейство шрифтов, выполните следующие действия в Android Studio:
- Щелкните правой кнопкой мыши папку шрифтов и выберите "Создать"> "Файл ресурсов шрифта". Откроется окно "Новый файл ресурсов".
- Введите имя файла и нажмите кнопку ОК. Новый ресурс шрифта XML открывается в редакторе.
Вложите каждый элемент шрифта, стиль и вес в элемент. Следующий XML-код иллюстрирует добавление связанных со шрифтом атрибутов в XML-код ресурса шрифта:
**<font-family <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>**
Добавление шрифтов в TextView
Чтобы установить шрифт для TextView, выполните одно из следующих действий:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/lobster"/>
Проверьте это для полной документации.
Надеюсь, это поможет вам.