Как добавить внешние шрифты в приложение для 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().
Для получения дополнительной информации здесь урок, где я получил это:
Я рекомендую этот подход, очень приятно с добавлением имени пользовательского шрифта в typeface
в styles.xml
и положить ваш набор шрифтов в assets
папка.
Еще один момент в дополнение к ответам выше. При использовании шрифта внутри фрагмента создание шрифта должно выполняться в методе onAttach (переопределение), как показано ниже:
@Override
public void onAttach(Activity activity){
super.onAttach(activity);
Typeface tf = Typeface.createFromAsset(getApplicationContext().getAssets(),"fonts/fontname.ttf");
}
Причина:
Существует небольшой промежуток времени, прежде чем фрагмент прикрепляется к действию. Если метод CreateFromAsset вызывается до присоединения фрагмента к действию, возникает ошибка.