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

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

Спасибо.

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

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

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

Ответ 4

Чтобы реализовать, вам нужно использовать Typeface, используя образец ниже

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

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

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

Для получения дополнительной информации обратитесь к учебнику, в котором я получил следующее:

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

Ответ 6

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

Ответ 7

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

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

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