Допустимые значения для android: fontFamily и на что они направлены?
В ответе этот вопрос пользователь перечисляет значения для android:fontFamily
и 12 вариантов (см. ниже). Откуда берутся эти ценности? Документация для android:fontFamily
не перечисляет эту информацию ни в каком месте (я проверил здесь и здесь). Строки перечислены в файле 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) и удаляет всю избыточность, которая находится в некоторых стилях, которые были созданы до того, как я просмотрел файл.
Ответы
Ответ 1
Откуда берутся эти значения? Документация для 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>
Light
<item name="android:fontFamily">sans-serif-light</item>
<item name="android:textStyle">normal</item>
Light-наклонный
<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>
Medium-наклонным
<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>
Для быстрой справки они выглядят так:
![]()
Ответ 2
Доступные шрифты (от Nougat)
![Предварительный просмотр всех шрифтов]()
Подробнее об этих шрифтах можно узнать в http://developer.android.com/design/style/typography.html.
fonts.xml
- это окончательный и постоянно расширяющийся список шрифтов Android.
Использование этих шрифтов
Чтобы использовать один из этих шрифтов, посмотрите fonts.xml
и найдите фамилию шрифта. Например, для использования Cutive Mono соответствующий фрагмент из файла fonts.xml
<family name="serif-monospace">
<font weight="400" style="normal">CutiveMono.ttf</font>
</family>
serif-monospace
является, таким образом, фамилией. Укажите это имя в TextView или стиле, например
<TextView
android:fontFamily="serif-monospace"
android:textStyle="italic" />
Или просто используйте эту таблицу:
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 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 - резервный шрифт, вы не можете указать его напрямую)
Совместимость
На основе log файла fonts.xml и предыдущего system_fonts.xml, вы можете увидеть, когда был добавлен каждый шрифт:
- Сэндвич с мороженым: Roboto Regular, жирный, курсив и полужирный курсив.
- Желе Bean: Робото-свет, светло-курсив, конденсированный, конденсированный жирный, конденсированный курсив и конденсированный полужирный курсив
- Желе Bean MR1: Roboto тонкий и тонкий курсив
- Lollipop:
- Робото-среда, средне-курсивная, черная и черная курсивная
- Noto Serif регулярный, полужирный, курсив, жирный курсив
- Cutive Mono
- Скоро
- Танцы Script
- Carrois Gothic SC
- Noto Sans
Ответ 3
Насколько я знаю, вы не можете объявлять пользовательские шрифты в 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" />