Как указать, например. Roboto-Medium или Roboto-Black в styles.xml
Сообщения, подобные этому Как изменить fontFamily в TextView в Android, предлагает, чтобы варианты шрифтов Roboto, которые вы можете указать в styles.xml в Android 4.2, сводятся к следующее:
- Обычный
- Курсив
- Жирный
- Жирный курсив
- Light
- Light-наклонный
- Тонкий
- Тонкого наклонный
- Конденсированный регулярный
- Сжатый курсив
- Сжатый жирный
- Сжатый полужирный
Это исключает возможность стиля TextViews, используя, например. шрифты Roboto-Medium или Roboto-Black.
Но почему Google добавляет широкие шрифты системы, которые нельзя использовать для стилизации вашего TextViews? Конечно, должен быть какой-то способ указать все шрифты Roboto из styles.xml(т.е. НЕ добавлять встроенные шрифты в качестве активов и создавать собственные текстовые элементы в коде), но как?
Ответы
Ответ 1
На Android 5.0 вы можете установить среду Roboto с помощью sans-serif-medium
.
Это решение, взятое из Google iosched 2014, использует sans-serif
на Android pre-v21:
значения/styles.xml
<style name="MyStyle">
<item name="android:fontFamily">@string/font_fontFamily_medium</item>
</style>
значения/fonts.xml
<string name="font_fontFamily_medium">sans-serif</string>
значения-V21/fonts.xml
<string name="font_fontFamily_medium">sans-serif-medium</string>
Ответ 2
НОВОЕ РЕШЕНИЕ
После Google I/O '17 вы можете создать несколько семейств шрифтов в папке res/font
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:app="http://schemas.android.com/apk/res-auto">
<font
app:font="@font/roboto_light"
app:fontStyle="normal"
app:fontWeight="300" />
<font
app:font="@font/roboto_bold"
app:fontStyle="normal"
app:fontWeight="700" />
</font-family>
и вы можете использовать везде, где хотите
<style name="AppTheme.DefaultTextView" parent="android:style/Widget.TextView">
<item name="android:textColor">@color/colorBlack</item>
<item name="android:fontFamily">@font/font_family_roboto</item>
</style>
![font family]()
СТАРЫЙ ОТВЕТ
Спасибо за Якоба Эрикссона
оригинальный ответ
android:fontFamily="sans-serif" // roboto regular
android:fontFamily="sans-serif-light" // roboto light
android:fontFamily="sans-serif-condensed" // roboto condensed
android:fontFamily="sans-serif-black" // roboto black
android:fontFamily="sans-serif-thin" // roboto thin (android 4.2)
android:fontFamily="sans-serif-medium" // roboto medium (android 5.0)
стильно:
<style name="AppTheme.DefaultTextView" parent="android:style/Widget.TextView">
<item name="android:textSize">@dimen/text_view_text_size</item>
<item name="android:textColor">@color/black</item>
<item name="android:fontFamily">sans-serif-light</item>
<item name="android:textStyle">normal</item>
</style>
в теме приложения:
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/gray</item>
<item name="android:textViewStyle">@style/AppTheme.DefaultTextView</item>
</style>
Ответ 3
Я предлагаю вам использовать пользовательские библиотеки, такие как Android-RobotoTextView или Calligraphy.
С одним из них вы можете установить шрифт представления в xml с атрибутом, чтобы вы могли вставить его в styles.xml. И они работают с предыдущей версией Android, чем 4.0
Ответ 4
Библиотека поддержки 26 представила с использованием шрифтов в XML и обратно совместима с Android API 14.
Чтобы добавить шрифты в качестве ресурсов, выполните следующие шаги в Android Studio:
-
Щелкните правой кнопкой мыши папку res и выберите "Создать" > "Каталог ресурсов Android".
Появится окно New Resource Directory.
-
В списке Тип ресурса выберите шрифт и нажмите кнопку ОК.
Примечание. Имя каталога ресурсов должно быть шрифтом.
![Рисунок 1. Добавление каталога ресурсов шрифта]()
- Добавьте файлы шрифтов в папку шрифтов.
Структура папки ниже генерирует
R.font.dancing_script
, R.font.lobster
и R.font.typo_graphica
.
![Рисунок 2. Добавление файлов шрифтов в каталог ресурсов]()
- Дважды щелкните файл шрифта, чтобы просмотреть шрифты файла в редакторе.
![Рисунок 3. Предварительный просмотр файла шрифта]()
Чтобы установить шрифт для TextView
, в XML файле макета установите атрибут fontFamily в файл шрифта, к которому вы хотите получить доступ.
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:fontFamily="@font/lobster"/>
Предварительный просмотр макета Android Studio позволяет просмотреть шрифт, установленный в TextView.
![Рисунок 4. Предварительный просмотр шрифтов в предварительном просмотре макетa]()
Чтобы добавить шрифт в стиль, откройте styles.xml и установите атрибут fontFamily в файл шрифта, к которому вы хотите получить доступ.
<style name="customfontstyle" parent="@android:style/TextAppearance.Small">
<item name="android:fontFamily">@font/lobster</item>
Если вы не хотите связывать шрифты в своем приложении, вы всегда можете посмотреть Загружаемые шрифты