Допустимые значения для Android:fontFamily и на что они отображаются?
В ответе на этот вопрос пользователь перечисляет значения для android:fontFamily
и 12 вариантов (см. ниже). Откуда эти ценности? Документация для android:fontFamily
не перечисляет эту информацию в любом месте (я проверял здесь, и здесь). Строки перечислены в файле Android styles.xml в разных местах, но как они соотносятся со шрифтом Roboto?
Начиная с Android 4.1 / 4.2 доступны следующие семейства шрифтов Roboto:
android:fontFamily="sans-serif" // roboto regular android:fontFamily="sans-serif-light" // roboto light android:fontFamily="sans-serif-condensed" // roboto condensed android:fontFamily="sans-serif-thin" // roboto thin (android 4.2) android:fontFamily="sans-serif-medium" // roboto medium (android 5.0)
в сочетании с этим
android:textStyle="normal|bold|italic"
Возможны 12 вариантов:
- регулярное
- курсивный
- Смелый
- Жирный курсив
- Свет
- Светло-наклонным
- тонкий
- Тонкий курсив
- Сгущенный регулярный
- Сжатый курсив
- Конденсированный жирный
- Конденсированный жирный курсив
в styles.xml
файл в приложении, над которым я работаю, кто-то перечислил это как семейство шрифтов, и я уверен, что это неправильно:
<item name="android:fontFamily">Roboto-Regular.ttf</item>
Я хотел бы правильно настроить тему для нашего приложения (которая включает в себя правильное использование fontFamily) и удалить всю избыточность, которая присутствует в некоторых стилях, созданных до того, как я взглянул на файл.
3 ответа
Откуда эти ценности? Документация для Android:fontFamily не перечисляет эту информацию в любом месте
Они действительно не перечислены в документации. Но они упоминаются здесь в разделе "Семейства шрифтов". В документе перечислены все новые публичные API для Android Jelly Bean 4.1.
В файле styles.xml в приложении я работаю над тем, кто перечислил это как семейство шрифтов, и я почти уверен, что это неправильно:
Да, это неправильно. Вы не ссылаетесь на файл шрифта, вы должны использовать имя шрифта, упомянутое в связанном документе выше. В этом случае это должно было быть так:
<item name="android:fontFamily">sans-serif</item>
Как и в случае уже упомянутого связанного ответа, возможны 12 вариантов:
Добавлено в Android Jelly Bean (4.1) - API 16:
Обычный (по умолчанию):
<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">normal</item>
Курсив:
<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">italic</item>
Жирный
<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">bold</item>
Полужирный курсив:
<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">bold|italic</item>
Свет:
<item name="android:fontFamily">sans-serif-light</item>
<item name="android:textStyle">normal</item>
Светлый курсив:
<item name="android:fontFamily">sans-serif-light</item>
<item name="android:textStyle">italic</item>
Тонкий
<item name="android:fontFamily">sans-serif-thin</item>
<item name="android:textStyle">normal</item>
Тонкий курсив:
<item name="android:fontFamily">sans-serif-thin</item>
<item name="android:textStyle">italic</item>
Сгущенный регулярный:
<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">normal</item>
Сжатый курсив:
<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">italic</item>
Сгущенный жирный шрифт:
<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">bold</item>
Сжатый жирный курсив:
<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">bold|italic</item>
Добавлено в Android Lollipop (v5.0) - API 21:
Средний:
<item name="android:fontFamily">sans-serif-medium</item>
<item name="android:textStyle">normal</item>
Средний курсив:
<item name="android:fontFamily">sans-serif-medium</item>
<item name="android:textStyle">italic</item>
Черный:
<item name="android:fontFamily">sans-serif-black</item>
<item name="android:textStyle">italic</item>
Для краткости, вот как они все выглядят:
Доступные шрифты (по состоянию на Oreo)
На странице Типография дизайна материалов есть демонстрации некоторых из этих шрифтов и предложения по выбору шрифтов и стилей.
Для кода сыщиков: fonts.xml
это исчерпывающий и постоянно расширяющийся список шрифтов Android.
Используя эти шрифты
Установить android:fontFamily
а также android:textStyle
атрибуты, например
<!-- Roboto Bold -->
<TextView
android:fontFamily="sans-serif"
android:textStyle="bold" />
до желаемых значений из этой таблицы:
Font | android:fontFamily | android:textStyle
-------------------------|-----------------------------|-------------------
Roboto Thin | sans-serif-thin |
Roboto Light | sans-serif-light |
Roboto Regular | sans-serif |
Roboto Bold | sans-serif | bold
Roboto Medium | sans-serif-medium |
Roboto Black | sans-serif-black |
Roboto Condensed Light | sans-serif-condensed-light |
Roboto Condensed Regular | sans-serif-condensed |
Roboto Condensed Medium | sans-serif-condensed-medium |
Roboto Condensed Bold | sans-serif-condensed | bold
Noto Serif | serif |
Noto Serif Bold | serif | bold
Droid Sans Mono | monospace |
Cutive Mono | serif-monospace |
Coming Soon | casual |
Dancing Script | cursive |
Dancing Script Bold | cursive | bold
Carrois Gothic SC | sans-serif-smallcaps |
(Noto Sans является резервным шрифтом; вы не можете указать его напрямую)
Примечание: эта таблица получена из fonts.xml
, Название и стиль каждого шрифта перечислены в файле fonts.xml, например
<family name="serif-monospace">
<font weight="400" style="normal">CutiveMono.ttf</font>
</family>
serif-monospace
таким образом, семейство шрифтов, и normal
это стиль.
Совместимость
Основываясь на журнале fonts.xml и прежнем system_fonts.xml, вы можете увидеть, когда был добавлен каждый шрифт:
- Сэндвич с мороженым: обычный, жирный, курсив и полужирный курсив
- Желейные бобы: светлый, светлый курсив, сжатый жирный шрифт, сжатый курсив и жирный курсив
- Jelly Bean MR1: Roboto тонкий и тонкий курсив
- Леденец:
- Робото средний, средний курсив, черный и черный курсив
- Noto Serif обычный, жирный, курсив, жирный курсив
- Cutive Mono
- Скоро будет
- Танцевальный сценарий
- Carrois Gothic SC
- Ното Санс
- Oreo MR1: Roboto конденсированная среда
Насколько я знаю, вы не можете объявить пользовательские шрифты в XML или темах. Я обычно просто делаю пользовательские классы, расширяющие textview, которые устанавливают свой собственный шрифт при создании экземпляров, и использую их в моих файлах макета XML.
то есть:
public class Museo500TextView extends TextView {
public Museo500TextView(Context context, AttributeSet attrs) {
super(context, attrs);
this.setTypeface(Typeface.createFromAsset(context.getAssets(), "path/to/font.ttf"));
}
}
а также
<my.package.views.Museo900TextView
android:id="@+id/dialog_error_text_header"
android:layout_width="190dp"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:textSize="12sp" />