Я использую светлый шрифт Roboto в своем приложении. Чтобы установить шрифт, я должен добавить android:fontFamily="sans-serif-light"
к каждому представлению. Есть ли способ объявить шрифт Roboto как семейство шрифтов по умолчанию для всего приложения? Я пытался так, но это не сработало.
<style name="AppBaseTheme" parent="android:Theme.Light"></style>
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:fontFamily">sans-serif-light</item>
</style>
android
android-fonts
tomrozb
источник
источник
Ответы:
Ответ - да.
Глобал Робото лайт для
TextView
иButton
классов:Просто выберите нужный стиль из списка themes.xml , затем создайте свой собственный стиль на основе оригинального. В конце примените стиль в качестве темы приложения.
Он будет работать только со встроенными шрифтами, такими как Roboto, но это был вопрос. Для пользовательских шрифтов (например, загружаемых из ресурсов) этот метод не будет работать.
РЕДАКТИРОВАТЬ 13/13/15
Если вы используете темы AppCompat, не забудьте удалить
android:
префикс. Например:Обратите внимание, что префикс
buttonStyle
не содержитandroid:
, ноtextViewStyle
должен содержать его.источник
sans-serif-light
ценность? Есть ли список допустимых значенийfontFamily
где-то? Я просматривал документы, а также файлы тем и стилей в источнике Android и ничего не могу найти.С выпуском Android Oreo вы можете использовать библиотеку поддержки для достижения этой цели.
Ссылка на семейство шрифтов по умолчанию в основном стиле вашего приложения:
Проверьте https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html для получения более подробной информации.
источник
android:
префиксBase.TextAppearance.AppCompat
, он там не используется.Чтобы изменить шрифт приложения, выполните следующие действия:
res
каталога создайте новый каталог и назовите егоfont
.res
->values
->styles.xml
внутри<resources>
-><style>
добавить свой шрифт<item name="android:fontFamily">@font/font_name</item>
.Теперь весь текст вашего приложения должен быть в том источнике, который вы добавили.
источник
ЧИТАЙТЕ ОБНОВЛЕНИЯ НИЖЕ
У меня была та же проблема с встраиванием нового шрифта, и, наконец, я получил его для работы с расширением TextView и установил внутри шрифт typefont.
Вы должны изменить элементы TextView позже на с каждого элемента. И если вы используете UI-Creator в Eclipse, иногда он не показывает TextViews правильно. Была единственная вещь, которая работает для меня ...
ОБНОВИТЬ
В настоящее время я использую отражение для изменения шрифтов во всем приложении без расширения TextViews. Проверьте этот так пост
ОБНОВЛЕНИЕ 2
Начиная с API уровня 26 и доступного в «библиотеке поддержки», вы можете использовать
Дополнительная информация: шрифты в XML
источник
getContext()
когда переменная является статической. Вы должны реализовать его как одноэлементный способ, иначе текущий код даже не скомпилируется.Добавьте эту строку кода в ваш файл res / value / styles.xml
весь стиль будет выглядеть так
замените «циркуляр_медиум» на собственное имя шрифта ..
источник
Не говорите о производительности, для пользовательского шрифта вы можете использовать рекурсивный цикл для всех видов и установить гарнитуру, если это TextView:
Во всей вашей деятельности передайте текущую ViewGroup ей после setContentView, и это будет сделано:
Для фрагмента вы можете сделать что-то подобное.
источник
recyclerView
как в аду.Еще один способ сделать это для всего приложения - использовать рефлексию, основанную на этом ответе.
затем, когда вы захотите переопределить шрифты, вы можете просто вызвать метод и присвоить ему карту шрифтов следующим образом:
для полной проверки примера
Это работает только для Android SDK 21 и выше, для более ранних версий проверьте полный пример
источник
Просто используйте эту библиотеку, скомпилируйте ее в свой файл оценок
и использовать его в методе onCreate в основной деятельности
Это самый элегантный супер быстрый способ сделать это.
источник
Это работа для моего проекта, источник https://gist.github.com/artem-zinnatullin/7749076
Создайте каталог шрифтов внутри папки активов, а затем скопируйте свой собственный шрифт в каталог шрифтов, например, я использую trebuchet.ttf;
Создать класс TypefaceUtil.java;
Изменить тему в файле styles.xml добавить ниже
Пример в Моем styles.xml
Наконец, в Activity или Fragment onCreate вызовите TypefaceUtil.java
источник
Android не предоставляет много способов поддержки применения шрифтов ко всему приложению (см. Эту проблему ). У вас есть 4 варианта установки шрифта для всего приложения:
Подробности этих опций можно найти здесь .
источник
Я знаю, что этот вопрос довольно старый, но я нашел хорошее решение. По сути, вы передаете макет контейнера этой функции, и он будет применять шрифт ко всем поддерживаемым представлениям и рекурсивно копировать в дочерних макетах:
источник
чтобы просто набор начертания приложения к
normal
,sans
,serif
илиmonospace
(не пользовательский шрифт!), вы можете сделать это.определите тему и установите
android:typeface
атрибут для гарнитуры, которую вы хотите использоватьstyles.xml
:применить тему ко всему приложению в
AndroidManifest.xml
файле:Ссылка на Android
источник
Попробуйте эту библиотеку, ее легкий и простой в реализации
https://github.com/sunnag7/FontStyler
источник
Ответ - нет, вы не можете. См. Можно ли установить собственный шрифт для всего приложения? Чтобы получить больше информации.
Есть обходные пути, но ничего в строках «одной строки кода здесь и все мои шрифты не будут это вместо того , чтобы ».
(Я вроде благодарю Google и Apple за это). У пользовательских шрифтов есть место, но если их легко заменить во всем приложении, это создаст целый мир приложений Comic Sans )
источник