Intereting Posts
Как имитировать SIM-карту для Android Как мы можем скрыть включение макета программно в Android? Android DrawerLayout не показывает значок правильного индикатора Почему в некоторых телефонах произошла ошибка «Это приложение было построено с неправильной конфигурацией»? Ошибка Android: не удалось установить * .apk на устройстве *: таймаут Очистить маркеры от Google Карты на Android Выполнение команд adb на всех подключенных устройствах Android: windowBackground = "@ null", чтобы улучшить скорость приложения Выполнение выполнено для задачи ': app: dexDebug'. Com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException Следует ли заменить панель действий ToolBar? Какое знание / экспертиза требуется для переноса андроида на пользовательское устройство ручного управления? Ориентация на Android с Scala 2.8. Есть ли способ установить алгоритм рисования с помощью XML? Встроенный компилятор Android Studio показывает красные ошибки, но компиляция с градием отлично работает Невозможно удалить виртуальное устройство из Eclipse, android

Android – Как настроить собственный шрифт для всего приложения

Возможный дубликат:
Можно ли установить шрифт для всего приложения?

Мне нужно установить собственный шрифт (формат .ttf) для всего приложения, как я могу это сделать? Из Manifest или XML будет лучшим вариантом, если это возможно

Solutions Collecting From Web of "Android – Как настроить собственный шрифт для всего приложения"

EDIT Сентябрь 2014:

Для тех, кто все еще видит этот старый ужасный ответ, настоящий, хороший ответ здесь:

https://stackoverflow.com/a/16883281/1154026


OLD:

Лучше всего было бы:

Настройка шрифтов для Android

Так

TextView text = (TextView) findViewById(R.id.custom_font); Typeface font = Typeface.createFromAsset(getAssets(), "yourfont.ttf"); text.setTypeface(font); 

С вашим .ttf в корне папки «assets».

Вы могли бы сделать это так. Создайте собственное текстовое представление и используйте его везде

 public class MyTextView extends android.widget.TextView { public MyTextView(Context context) { this(context, null); } public MyTextView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public MyTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs); if (this.isInEditMode()) return ; final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SomeStyle); final String customFont = a.getString(R.styleable.SomeStyle_font); //Build a custom typeface-cache here! this.setTypeface( Typeface.createFromAsset(context.getAssets(), customFont) ); } } 

Добавьте это в attrs.xml

 <declare-styleable name="SomeStyle"> <attr name="font" format="string" /> </declare-styleable> 

Затем в вашей теме сделайте следующее: это позволит убедиться, что все текстовые изображения будут использовать стиль MyTextView

 <item name="android:textViewStyle">@style/MyTextView</item> 

И теперь мы можем определить ваш собственный шрифт, используя ваш собственный атрибут в этом стиле.

 <style name="MyTextView" parent="@android:style/Widget.TextView"> <item name="font">MyPathToFontInAssets.ttf</item> </style> 

Поэтому всякий раз, когда вы используете MyTextView в проекте, у него будет свой собственный шрифт.

ВАЖНО: шрифты не кэшируются, поэтому, если вы планируете использовать этот код, вы также должны создать собственный кэш типаface, чтобы вы могли повторно использовать пользовательский шрифт для всех текстовых просмотров. Это значительно ускорит применение!

ОБНОВЛЕНИЕ: Как говорил Амир, это почти то же самое, что и пользовательские шрифты и макеты XML (Android), но я также использую стиль Android для автоматического использования его во всех текстовых заметках в приложении.

Cerate подкласс TextView и использовать его везде

  public class RobotoTextView extends TextView { public RobotoTextView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); init(); } public RobotoTextView(Context context, AttributeSet attrs) { super(context, attrs); init(); } public RobotoTextView(Context context) { super(context); init(); } private void init() { if (!isInEditMode()) { Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Light.ttf"); setTypeface(tf); } } } 

Применение

 <com.test.RobotoTextView android:id="@+id/name" android:layout_width="fill_parent" android:layout_height="wrap_content" /> 

В java-коде вы можете передать его в TextView

 TextView tv=(TextView)findViewById(R.id.custom); Typeface face=Typeface.createFromAsset(getAssets(), "fonts/Verdana.ttf"); tv.setTypeface(face); 

Поместите файл шрифта в папку шрифтов в / res /

Как мой ответ, если это полезно …

Вы можете расширить TextView, как предложено здесь, и установить на нем свой шрифт, а затем использовать его в целом приложении.