Как добавить внешние шрифты в приложение для Android - PullRequest
71 голосов
/ 12 апреля 2011

Я искал стильные шрифты для своего приложения для Android. но проблема в том, как сделать приложение для Android поддерживаемым для внешних шрифтов.

Спасибо.

Ответы [ 7 ]

147 голосов
/ 12 апреля 2011

Вам нужно создать папку шрифтов в папке активов в вашем проекте и поместить в нее свой TTF. Тогда в вашей активности onCreate ()

TextView myTextView=(TextView)findViewById(R.id.textBox);
Typeface typeFace=Typeface.createFromAsset(getAssets(),"fonts/mytruetypefont.ttf");
myTextView.setTypeface(typeFace);

Обратите внимание, что не все TTF будут работать. Пока я экспериментировал, он работал только для подмножества (в Windows те, чье имя написано маленькими буквами).

12 голосов
/ 15 июля 2014

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

public class MyTextView extends TextView {

   Typeface normalTypeface = Typeface.createFromAsset(getContext().getAssets(), Constants.FONT_REGULAR);
   Typeface boldTypeface = Typeface.createFromAsset(getContext().getAssets(),  Constants.FONT_BOLD);

   public MyTextView(Context context, AttributeSet attrs, int defStyle) {
       super(context, attrs, defStyle);
   }

   public MyTextView(Context context, AttributeSet attrs) {
       super(context, attrs);
   }

   public MyTextView(Context context) {
       super(context);
   }

   public void setTypeface(Typeface tf, int style) {
       if (style == Typeface.BOLD) {
           super.setTypeface(boldTypeface/*, -1*/);
       } else {
           super.setTypeface(normalTypeface/*, -1*/);
       }
   }
}
9 голосов
/ 12 апреля 2011

Создайте папку с именем fonts в папке assets и добавьте фрагмент по ссылке ниже.

Typeface tf = Typeface.createFromAsset(getApplicationContext().getAssets(),"fonts/fontname.ttf");
textview.setTypeface(tf);
7 голосов
/ 03 декабря 2012

Для реализации необходимо использовать гарнитуру, пройдите образец ниже

Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/Roboto/Roboto-Regular.ttf");
for (View view : allViews)
{
   if (view instanceof TextView) 
   {
      TextView textView = (TextView) view;
      textView.setTypeface(typeface);
      }
   }
}
5 голосов
/ 12 апреля 2011

Самый простой способ сделать это - упаковать нужный шрифт (ы) с вашим приложением. Для этого просто создайте ресурс / папку в корень проекта и поместите ваши шрифты (в форме TrueType или TTF) в активы. Вы можете, например, создать активы / шрифты / и положить TTF файлы там.

Затем вы должны указать своим виджетам использовать этот шрифт. К несчастью, Вы больше не можете использовать макет XML для этого, так как XML не знает о любых шрифтах, которые вы могли скрыть в качестве актива приложения. Вместо этого вам нужно внести изменения в код Java, вызвав Typeface.createFromAsset (getAssets (), «fonts / HandmadeTypewriter.ttf»), затем взять созданный объект Typeface и передать его вашему TextView через setTypeface ().

Для получения дополнительной информации вот урок, где я получил это:

http://www.androidguys.com/2008/08/18/fun-with-fonts/

2 голосов
/ 27 ноября 2015

Еще один пункт в дополнение к ответам выше.При использовании шрифта внутри фрагмента создание шрифта должно выполняться в методе onAttach (переопределение), как указано ниже:

@Override
public void onAttach(Activity activity){
    super.onAttach(activity);
    Typeface tf = Typeface.createFromAsset(getApplicationContext().getAssets(),"fonts/fontname.ttf");
}

Причина Существует небольшой промежуток времени, прежде чем фрагмент прикрепляется к действию.Если метод CreateFromAsset вызывается до прикрепления фрагмента к действию, возникает ошибка.

2 голосов
/ 16 декабря 2014

Я рекомендую этот подход очень приятно, если добавить имя пользовательского шрифта в typeface в styles.xml и поместить набор шрифтов в папку assets.

...