Использование шрифтов в XML функция, вы можете указать различные веса шрифта для семейства шрифтов. Например:
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<font android:font="@font/archivo_narrow_regular" android:fontWeight="400" android:fontStyle="normal"
app:font="@font/archivo_narrow_regular" app:fontWeight="400" app:fontStyle="normal"/>
<font android:font="@font/archivo_narrow_regular_italic" android:fontWeight="400" android:fontStyle="italic"
app:font="@font/archivo_narrow_regular_italic" app:fontWeight="400" app:fontStyle="italic"/>
<font android:font="@font/archivo_narrow_medium" android:fontWeight="500" android:fontStyle="normal"
app:font="@font/archivo_narrow_medium" app:fontWeight="500" app:fontStyle="normal"/>
<font android:font="@font/archivo_narrow_medium_italic" android:fontWeight="500" android:fontStyle="italic"
app:font="@font/archivo_narrow_medium_italic" app:fontWeight="500" app:fontStyle="italic"/>
<font android:font="@font/archivo_narrow_semibold" android:fontWeight="600" android:fontStyle="normal"
app:font="@font/archivo_narrow_semibold" app:fontWeight="600" app:fontStyle="normal"/>
<font android:font="@font/archivo_narrow_semibold_italic" android:fontWeight="600" android:fontStyle="italic"
app:font="@font/archivo_narrow_semibold_italic" app:fontWeight="600" app:fontStyle="italic"/>
<font android:font="@font/archivo_narrow_bold" android:fontWeight="700" android:fontStyle="normal"
app:font="@font/archivo_narrow_bold" app:fontWeight="700" app:fontStyle="normal"/>
<font android:font="@font/archivo_narrow_bold_italic" android:fontWeight="700" android:fontStyle="italic"
app:font="@font/archivo_narrow_bold_italic" app:fontWeight="700" app:fontStyle="italic"/>
</font-family>
Но я не могу понять, как на самом деле использовать каждый из этих весов; либо в файле XML (макет/стиль), либо в коде Java. Для TextView
отсутствует атрибут fontWeight
, а Typeface
, созданный из ResourcesCompat.getFont(context, R.font.archivo_narrow)
не упоминает вес шрифта.
Я понимаю, что могу просто указать конкретный ресурс шрифта (например, R.font.archivo_narrow_semibold
), но тогда какой смысл иметь атрибут fontWeight
в font-family
?
Обновлять
Новый статический create(Typeface family, int weight, boolean italic)
был добавлен в API уровня 28 вместе с getWeight()
метод экземпляра. Это, наконец, позволяет использовать атрибут fontWeight
в коде Java; правда только для API Level 28 и выше, аналогов в библиотеке поддержки я не нашел.
Это полезно и показывает, что атрибут fontWeight
в прошлом не служил никакой цели, но мне бы очень хотелось иметь возможность использовать вес в стилях XML.
textFontWeight
? У меня не работает даже на API 28. - person Florian Walther   schedule 14.04.2019