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

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

Спасибо.

7 ответов

Решение

Вам необходимо создать папку шрифтов в папке активов в вашем проекте и поместить в нее свой TTF. Затем в вашей деятельности onCreate()

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

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

Вы можете использовать пользовательский 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*/);
       }
   }
}

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

Typeface tf = Typeface.createFromAsset(getApplicationContext().getAssets(),"fonts/fontname.ttf");
textview.setTypeface(tf);

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

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);
      }
   }
}

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

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

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

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

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

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

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

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

Другие вопросы по тегам