Можно ли установить собственный шрифт для всего приложения? - PullRequest
261 голосов
/ 26 апреля 2010

Мне нужно использовать определенный шрифт для всего приложения. У меня есть файл .ttf для того же. Можно ли установить его в качестве шрифта по умолчанию при запуске приложения, а затем использовать его в другом месте приложения? Когда установлено, как я могу использовать его в XML-макете?

Ответы [ 24 ]

0 голосов
/ 03 июня 2016

Это решение в некоторых ситуациях работает некорректно.
Итак, я расширяю это:

FontsReplacer.java

public class MyApplication extends Application {

    @Override
    public void onCreate() {
        FontsReplacer.replaceFonts(this);
        super.onCreate();
    }

}

https://gist.github.com/orwir/6df839e3527647adc2d56bfadfaad805

0 голосов
/ 26 января 2018

Чтобы изменить семейство шрифтов по умолчанию для TextViews, переопределите textViewStyle в теме вашего приложения.

Для использования нестандартного шрифта в fontFamily используйте ресурсы шрифтов, которые есть в библиотеке поддержки.

Функция была добавлена ​​в Android 26, но перенесена в более старые версии через supportlib.

https://developer.android.com/guide/topics/resources/font-resource.html https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html#using-support-lib

0 голосов
/ 13 мая 2018

С момента выпуска Android Oreo и его библиотеки поддержки (26.0.0) вы можете сделать это легко. См. этот ответ в другом вопросе.

В основном ваш окончательный стиль будет выглядеть так:

<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
   <item name="fontFamily">@font/your_font</item> <!-- target android sdk versions < 26 and > 14 -->
</style>
0 голосов
/ 27 мая 2010

Да, можно установить шрифт для всего приложения.

Самый простой способ сделать это - упаковать нужный шрифт (ы) в ваше приложение.

Для этого просто создайте папку assets / в корневом каталоге проекта и поместите ваши шрифты (в TrueType (или TTF, форма) в активах.

Вы можете, например, создать assets / fonts / и поместить туда свои файлы TTF.

public class FontSampler extends Activity {
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
TextView tv=(TextView)findViewById(R.id.custom);

Typeface face=Typeface.createFromAsset(getAssets(), "fonts/HandmadeTypewriter.ttf");
tv.setTypeface(face);
}
}
...