Во-первых, по умолчанию это не Arial. По умолчанию используется Droid Sans.
Во-вторых, чтобы перейти на другой встроенный шрифт, используйте android:typefaceв макете XML или setTypeface()в Java.
В-третьих, в Android нет шрифта Helvetica. Встроенный выбор: Droid Sans ( sans), Droid Sans Mono ( monospace) и Droid Serif ( serif). Хотя вы можете связать свои собственные шрифты с вашим приложением и использовать их через setTypeface(), имейте в виду, что файлы шрифтов большие и в некоторых случаях требуют лицензионных соглашений (например, Helvetica, шрифт Linotype ).
РЕДАКТИРОВАТЬ
Язык дизайна Android опирается на традиционные типографские инструменты, такие как масштаб, пространство, ритм и выравнивание с базовой сеткой. Успешное развертывание этих инструментов важно, чтобы помочь пользователям быстро понять экран информации. Чтобы поддержать такое использование типографики, Ice Cream Sandwich представила новое семейство шрифтов под названием Roboto, созданное специально для требований пользовательского интерфейса и экранов высокого разрешения.
Текущая структура TextView предлагает Roboto с тонкими, легкими, обычными и жирными весами, а также курсивом для каждого веса. Каркас также предлагает вариант Roboto Condensed с обычным и жирным весом, а также курсивом для каждого веса.
После ICS, Android включает в себя стиль шрифтов Roboto, Подробнее Roboto
РЕДАКТИРОВАТЬ 2
С появлением библиотеки поддержки 26 Android теперь поддерживает пользовательские шрифты по умолчанию. Вы можете вставить новые шрифты в res / шрифты, которые могут быть установлены для TextViews индивидуально или в XML или программно. Шрифт по умолчанию для всего приложения также может быть изменен путем определения его styles.xml документация для разработчиков Android имеет четкое руководство по этому вопросу здесь
Настроить гарнитуру с помощью кода Java сложно из-за нескольких строк, я создал библиотеку для установки пользовательских шрифтов. Вы можете найти использование библиотеки в этом ответе stackoverflow.com/a/42001474/4446392
Чатура Джаянат
254
Сначала скачайте .ttfфайл нужного вам шрифта ( arial.ttf). Поместите это в assets папку. (Внутри папки assets создайте новую папку с именем fonts и поместите в нее.) Используйте следующий код, чтобы применить шрифт к вашему TextView:
Typeface type =Typeface.createFromAsset(getAssets(),"fonts/arial.ttf");
textView.setTypeface(type);
Возможно, вы захотите создать статический класс, который будет содержать все шрифты. Таким образом, вы не будете создавать шрифт несколько раз, что может негативно сказаться на производительности . Просто убедитесь, что вы создали подпапку с именем « шрифты » в папке « активы ».
Сделать что-то вроде:
publicclassCustomFontsLoader{publicstaticfinalint FONT_NAME_1 =0;publicstaticfinalint FONT_NAME_2 =1;publicstaticfinalint FONT_NAME_3 =2;privatestaticfinalint NUM_OF_CUSTOM_FONTS =3;privatestaticboolean fontsLoaded =false;privatestaticTypeface[] fonts =newTypeface[3];privatestaticString[] fontPath ={"fonts/FONT_NAME_1.ttf","fonts/FONT_NAME_2.ttf","fonts/FONT_NAME_3.ttf"};/**
* Returns a loaded custom font based on it's identifier.
*
* @param context - the current context
* @param fontIdentifier = the identifier of the requested font
*
* @return Typeface object of the requested font.
*/publicstaticTypeface getTypeface(Context context,int fontIdentifier){if(!fontsLoaded){
loadFonts(context);}return fonts[fontIdentifier];}privatestaticvoid loadFonts(Context context){for(int i =0; i < NUM_OF_CUSTOM_FONTS; i++){
fonts[i]=Typeface.createFromAsset(context.getAssets(), fontPath[i]);}
fontsLoaded =true;}}
Таким образом, вы можете получить шрифт из любого места в вашем приложении.
Классно, чувак! Это красота ООП. Отличная работа! :)
Джошуа Майкл Ваггонер
Как я могу использовать этот класс?
Джек
Вам нужно поместить этот код в свой проект, адаптировать его к своим шрифтам, а затем использовать статический метод getTypeface (..) из любого места в вашем приложении.
Даниэль Л.
Я использовал подобное решение, но добавил кеширование для повышения производительности .... В любом случае, вы сталкивались с ситуацией, когда шрифт работает на некоторых телефонах, а на других нет?
Почему создание подклассов TextView - лучшая практика?
Стелс Раввин
@Stealth Rabbi, здесь мы можем передавать пользовательский шрифт только в формате XML, не нужно писать специальный код Java для каждого текстового представления.
Почему в этом ответе только 1 ответ, а в ответе выше 15? Что делает другого лучше? Мне кажется, это более прямолинейный принцип синглтона ...?
Koen Demonie
Просто видел, что у вас есть ваш конструктор публично, я бы сделал его приватным, так как вам не нужен доступ к нему. В любом случае вы используете свой внутренний шрифт шрифтов ...
Koen Demonie
Абсолютно должен быть частный конструктор. Хорошо заметили :) Буду редактировать!
Крис Эйтчисон
12
Рекомендуется использовать библиотеку поддержки Android версии 26.0.0 или выше.
ШАГ 1: добавить файл шрифта
В папке res создайте новый словарь ресурсов шрифта
Добавить файл шрифта ( .ttf , .orf )
Например, когда файл шрифта будет helvetica_neue.ttf, который будет генерировать R.font.helvetica_neue
ШАГ 2: создать семейство шрифтов
В папке шрифтов добавьте новый файл ресурсов
Вложите каждый элемент шрифта, стиль и вес в элемент.
Это немного старый, но я немного улучшил класс CustomFontLoader, и я хотел поделиться им, чтобы он мог быть полезным. Просто создайте новый класс с этим кодом.
затем создайте каталог с именем "font" внутри папки res
поместите файлы шрифтов (ttf) в этот каталог шрифтов, помните о соглашениях по именованию [egname не должен содержать никаких специальных символов, символов верхнего регистра и пробела или табуляции]
После этого ссылаться на этот шрифт из XML, как это
Вам нужно создать экземпляр этого класса в MainActivity? Потому что это ничего не меняет для меня.
Тобиас Майр
1
В Android используется шрифт Roboto, который очень хорошо выглядит, с несколькими различными весами (обычный, легкий, тонкий, сжатый), которые отлично смотрятся на экранах с высокой плотностью.
Проверьте ссылку ниже, чтобы проверить шрифты робота:
Возвращаясь к вашему вопросу, если вы хотите изменить шрифт для всех TextView / Button в вашем приложении , попробуйте добавить следующий код в файл styles.xml, чтобы использовать шрифт Roboto-light :
<!-- Base application theme. --><stylename="AppTheme"parent="Theme.AppCompat.Light.DarkActionBar"><!-- Customize your theme here.-->......<item name="android:buttonStyle">@style/MyButton</item><item name="android:textViewStyle">@style/MyTextView</item></style><stylename="MyButton"parent="@style/Widget.AppCompat.Button"><item name="android:textAllCaps">false</item><item name="android:fontFamily">sans-serif-light</item></style><stylename="MyTextView"parent="@style/TextAppearance.AppCompat"><item name="android:fontFamily">sans-serif-light</item></style>
И не забудьте использовать «AppTheme» в вашем AndroidManifest.xml
Ответы:
Во-первых, по умолчанию это не Arial. По умолчанию используется Droid Sans.
Во-вторых, чтобы перейти на другой встроенный шрифт, используйте
android:typeface
в макете XML илиsetTypeface()
в Java.В-третьих, в Android нет шрифта Helvetica. Встроенный выбор: Droid Sans (
sans
), Droid Sans Mono (monospace
) и Droid Serif (serif
). Хотя вы можете связать свои собственные шрифты с вашим приложением и использовать их черезsetTypeface()
, имейте в виду, что файлы шрифтов большие и в некоторых случаях требуют лицензионных соглашений (например, Helvetica, шрифт Linotype ).РЕДАКТИРОВАТЬ
После ICS, Android включает в себя стиль шрифтов Roboto, Подробнее Roboto
РЕДАКТИРОВАТЬ 2
источник
Сначала скачайте
.ttf
файл нужного вам шрифта (arial.ttf
). Поместите это вassets
папку. (Внутри папки assets создайте новую папку с именем fonts и поместите в нее.) Используйте следующий код, чтобы применить шрифт к вашемуTextView
:источник
src/main/assets/fonts/
.источник
Возможно, вы захотите создать статический класс, который будет содержать все шрифты. Таким образом, вы не будете создавать шрифт несколько раз, что может негативно сказаться на производительности . Просто убедитесь, что вы создали подпапку с именем « шрифты » в папке « активы ».
Сделать что-то вроде:
Таким образом, вы можете получить шрифт из любого места в вашем приложении.
источник
Лучшая практика когда-либо
TextViewPlus.java:
attrs.xml: (где размещать res / values )
Как пользоваться:
Надеюсь, что это поможет вам.
источник
Ответы выше верны. Просто убедитесь, что вы создаете подпапку с именем «шрифты» в папке «активы», если вы используете этот кусок кода.
источник
Еще один способ объединить создание шрифтов ...
А потом использовать в своей деятельности ...
Имейте в виду, эта идиома двойной проверки с изменяемым полем корректно работает только с моделью памяти, используемой в Java 1.5+.
источник
Рекомендуется использовать библиотеку поддержки Android версии 26.0.0 или выше.
ШАГ 1: добавить файл шрифта
Например, когда файл шрифта будет helvetica_neue.ttf, который будет генерировать R.font.helvetica_neue
ШАГ 2: создать семейство шрифтов
Например:
ШАГ 3: используйте его
В макетах XML:
Или добавьте шрифты в стиль:
Для большего количества примеров вы можете следовать документации:
источник
Это немного старый, но я немного улучшил класс CustomFontLoader, и я хотел поделиться им, чтобы он мог быть полезным. Просто создайте новый класс с этим кодом.
Тогда просто используйте этот код на вашем textview:
источник
Я наконец получил очень простое решение для этого.
использовать эти библиотеки поддержки на уровне приложения ,
затем создайте каталог с именем "font" внутри папки res
После этого ссылаться на этот шрифт из XML, как это
В этом примере times_new_roman_test является файлом ttf шрифта из этого каталога шрифтов.
источник
Таким образом, вы можете создать View, который наследуется от TextView и вызывает setTypeface для своего конструктора.
источник
Когда ваш шрифт хранится внутри,
res/asset/fonts/Helvetica.ttf
используйте следующее:Или, если ваш файл шрифтов хранится внутри,
res/font/helvetica.ttf
используйте следующее:источник
получить шрифт из ресурса и установить для всех детей
источник
добавить в attrs.xml, числа должны быть в порядке в классе массива.
источник
В Android используется шрифт Roboto, который очень хорошо выглядит, с несколькими различными весами (обычный, легкий, тонкий, сжатый), которые отлично смотрятся на экранах с высокой плотностью.
Проверьте ссылку ниже, чтобы проверить шрифты робота:
Как использовать Roboto в XML-макете
Возвращаясь к вашему вопросу, если вы хотите изменить шрифт для всех TextView / Button в вашем приложении , попробуйте добавить следующий код в файл styles.xml, чтобы использовать шрифт Roboto-light :
И не забудьте использовать «AppTheme» в вашем AndroidManifest.xml
источник
Может быть, что-то немного проще:
(Обратите внимание, что этот код не проверен, но в целом этот подход должен работать хорошо.)
источник