Intereting Posts
Получение имени пакета приложения foreground в Marshmallow задерживается на 3 секунды Android – Новый стиль календаря DatePicker и TimePicker FCM (Firebase Cloud Messaging), как отправить на все телефоны? Javax.net.ssl.sslpeerunverifiedexception no peer certificate Android 4.3: BLE: поведение фильтра startLeScan () Android ListView: не выделяется прикосновением, но работает, когда я использую трекбол Как исправить предупреждение proguard 'не может найти ссылочный метод' для существующих методов 'clone' и 'finalize' класса java.lang.Object Андроид sqlite удалить запрос не работает Синхронизация данных Android создает «Исходные папки, созданные в неправильном месте» Преобразование из px в dp для Google nexus 7 Как показать воздушный шар над маркером в MapActivity? Разве нет виджета? Android Facebook SDK 4 в Eclipse Как уменьшить конечную активность до прямоугольника Не удалось найти tools.jar React Native Android В Windows 10 Android: как нажать кнопку над мягкой клавиатурой

Допустимые значения для android: fontFamily и на что они направлены?

В ответе на этот вопрос пользователь перечисляет значения для android:fontFamily и 12 вариантов (см. Ниже). Откуда берутся эти ценности? Документация для android:fontFamily не перечисляет эту информацию ни в каком месте (я проверил здесь и здесь ). Строки перечислены в файле styles.xml для Android в разных местах, но как они вернутся к шрифту 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) и удалить всю избыточность, которая находится в некоторых стилях, которые были созданы до того, как я просмотрел файл.

Solutions Collecting From Web of "Допустимые значения для android: fontFamily и на что они направлены?"

Откуда берутся эти ценности? Документация для 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> 

Для быстрой справки они выглядят так:

Доступные шрифты (от Nougat)

Предварительный просмотр всех шрифтов

Подробнее об этих шрифтах можно узнать по адресу http://developer.android.com/design/style/typography.html .

fonts.xml – это окончательный и постоянно расширяющийся список шрифтов Android.


Использование этих шрифтов

Чтобы использовать один из этих шрифтов, fonts.xml в 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 – резервный шрифт, вы не можете указать его напрямую)


Совместимость

На основе журнала fonts.xml и прежнего system_fonts.xml вы можете увидеть, когда был добавлен каждый шрифт:

  • Мороженое Сэндвич: Робото регулярный, полужирный, курсив и жирный курсив
  • Jelly Bean: свет Roboto, светло-курсив, конденсированный, конденсированный жирный, конденсированный курсив и конденсированный полужирный курсив
  • Jelly Bean MR1: Roboto тонкий и тонкий курсив
  • Леденец:
    • Робото-среда, средне-курсивная, черная и черная курсив
    • Noto Serif регулярный, полужирный, курсив, жирный курсив
    • Режущий моно
    • Скоро
    • Танцевальный скрипт
    • Carrois Gothic SC
    • Ното Санс

Насколько мне известно, вы не можете объявлять пользовательские шрифты в 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" />