Дійсні значення для android: fontFamily і для чого вони відображають?


266

У відповіді на це запитання користувач перераховує значення для android:fontFamily12 варіантів (див. Нижче). Звідки беруться ці значення? У документації на 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) та видалити всі надмірності, які є в деяких стилях, створених до того, як я подивився на файл.

Відповіді:


346

Звідки беруться ці значення? Документація для 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>

Для швидкого ознайомлення, так вони виглядають:


2
Ха-ха: DI насправді раніше знав про сайт, тому знайти його було не складно. Але для подальшої довідки: я вважаю за краще використовувати пошук на developer.android.com через пошук у Google, оскільки ви можете обмежити пошук лише API, публікаціями блогу, нотатками випуску тощо
Ахмад

8
І якщо ви зацікавлені: Це те , де визначаються шрифти. Цей клас завантажує шрифти, і цей керує ними по факту.
Ахмад

1
@androiddeveloper зроблено. Чорний Roboto не відноситься до кольору шрифту, а є лише "більш сміливою" версією Roboto Bold. Я додав еталонне зображення внизу.
Ахмад

1
@Ahmad Дякую за роз’яснення цього. Ось ваш +1 ... :)
андроїд розробник

2
Крім того , є багато псевдонімів для використання з FontFamily android.googlesource.com/platform/frameworks/base / + / master / data / ...
Pauland

110

Доступні шрифти (станом на 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 ви можете бачити, коли кожен шрифт додано:

  • Бутерброд з морозивом: Roboto звичайний, жирний, курсив і жирний курсив
  • Jelly Bean: Roboto light, легкий курсив, конденсований, ущільнений жирний шрифт, конденсований курсив та конденсований жирний курсив.
  • Jelly Bean MR1: Робото тонкий і тонкий курсив
  • Льодяник:
    • Робото середній, середній курсив, чорний та чорний курсив
    • Noto Serif звичайний, жирний, курсив, жирний курсив
    • Кутіо Моно
    • Незабаром
    • Танцювальний сценарій
    • Carrois Gothic SC
    • Noto Sans
  • Oreo MR1: конденсований носій Roboto

1
як ви дізналися у журналі про версію Android?
андроїд розробник

3
@androiddeveloper Я дивився на дати, коли було додано кожен рядок. Щоб точно знати, які шрифти доступні в конкретній версії, подивіться на system_fonts.xml для цієї версії, наприклад, для Lollipop: android.googlesource.com/platform/frameworks/base/+/…
Newtonx

Моя єдина мотивація щодо цього, це не буквене позначення: p Але все-таки! Це має бути найкращою відповіддю! Дякую!
T.Woody

9

Наскільки мені відомо, ви не можете оголосити власні шрифти у xml чи темах. Зазвичай я роблю власні класи, що розширюють перегляд тексту, які встановлюють власний шрифт на інстанціювання та використовують ті, що знаходяться у моєму макеті 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" />

1
Це може коштувати вам багато пам’яті в переробці перегляду
Florescu Cătălin
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.