Использование собственного шрифта для всех текстов в моем приложении

Следуя этой процедуре, я хочу установить шрифт всего текста в приложении для 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:

  1. Щелкните правой кнопкой мыши папку шрифтов и выберите "Создать"> "Файл ресурсов шрифта". Откроется окно "Новый файл ресурсов".
  2. Введите имя файла и нажмите кнопку ОК. Новый ресурс шрифта XML открывается в редакторе.
  3. Вложите каждый элемент шрифта, стиль и вес в элемент. Следующий 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"/>

Проверьте это для полной документации.

Надеюсь, это поможет вам.

Другие вопросы по тегам