Как использовать шрифт Roboto в Android Project

Я разработал один проект Android. В этом проекте текстовый шрифт по умолчанию установлен на Android: Sans.

Теперь я хочу заменить шрифт текста по умолчанию на шрифт roboto для всего моего проекта.

Как я могу это сделать?

5 ответов

Решение

Вы можете скачать шрифт Roboto здесь: https://www.google.com/design/spec/resources/roboto-noto-fonts.html.

Вы можете сделать это традиционным способом, используя TypeFace, как это:

Typeface typeface = Typeface.createFromAsset(getAssets(), fontName);
textView.setTypeface(typeface);

Примечание: вышеперечисленное должно быть сделано в каждом Activity,

В качестве альтернативы, если, например, вы хотите применить шрифт Roboto ко всем TextView's в вашем приложении, то вам нужно будет создать свой собственный виджет, который расширяет TextView,

Есть простой способ сделать это. Следуйте leocadiotine в этом ответе на SO: /questions/29491372/android-hotite-ustanovit-polzovatelskie-shriftyi-dlya-vsego-prilozheniya-a-ne-vo-vremya-vyipolneniya/29491381#29491381 (полный реквизит leocadiotine для решения. Я использовал его раньше, и он работает как шарм)

РЕДАКТИРОВАТЬ: думать о your_namespace в качестве маркера для вас, чтобы дать ему имя по вашему выбору. Например, при интеграции Admob в XML я использую xmlns:ads, Вы можете использовать, например: xmlns:font или что-то описательное.

Что касается того, что означает custom.ttf, это в основном файл шрифта с его расширением, который вам нужно скопировать в свой файл. Assets папка. Например, если вы используете ROBOTO-REGULAR.TTF, замените файл custom.ttf на ROBOTO-REGULAR.TTF. Используя этот пример, весь код должен выглядеть так:

<your.package.widget.TypefacedTextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:font="http://schemas.android.com/apk/res/your.package"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Custom fonts in XML are easy"
    android:textColor="#FFF"
    android:textSize="14dip"
    font:typeface="ROBOTO-REGULAR.TTF" />
  1. Скачать и распаковать Roboto почтовый файл шрифта

  2. Создать assets папку в вашем проекте, если у вас ее еще нет. Я предполагаю, что вы используете Android Studio, вот как это сделать.

  3. Создайте новый каталог в папке активов, назовите его font,

  4. Откройте разархивированный файл и скопируйте выбранный вами стиль шрифта. Ваша папка шрифтов выглядит так:

Теперь вы можете использовать этот шрифт в любом месте вашего приложения, например:

   Typeface roboto = Typeface.createFromAsset(context.getAssets(), 
  "font/Roboto-Bold.ttf"); //use this.getAssets if you are calling from an Activity
   txtView.setTypeface(roboto);
txtView = (TextView) findViewById(R.id.txtView);

Typeface myTypeface = Typeface.createFromAsset(
                          this.getAssets(),
                          "font/Robot.otf");

txtView.setTypeface(myTypeface);

Вы можете сделать это легко, используя Typerlib.

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

Добавьте это к вашему build.gradle

dependencies {
    compile 'com.elmargomez.typer:typerlib:1.0.0'
}

Тогда вы можете использовать шрифт

TextView txtView1 = (TextView) findViewById(R.id.yourTxtView1);
TextView txtView2 = (TextView) findViewById(R.id.yourTxtView2);
TextView txtView3 = (TextView) findViewById(R.id.yourTxtView3);
TextView txtView4 = (TextView) findViewById(R.id.yourTxtView4);

txtView1.setTypeface(Typer.set(yourContext).getFont(Font.ROBOTO_REGULAR));
txtView2.setTypeface(Typer.set(yourContext).getFont(Font.ROBOTO_CONDENSED_ITALIC));
txtView3.setTypeface(Typer.set(yourContext).getFont(Font.ROBOTO_THIN));
txtView4.setTypeface(Typer.set(yourContext).getFont(Font.ROBOTO_BOLD));

Включает в себя все текущие шрифты в Roboto, например:

    Font.ROBOTO_MEDIUM
    Font.ROBOTO_REGULAR
    etc.

Для просмотра всех доступных шрифтов используйте Android Studio Auto complete после класса Font, нажав Ctrl + пробел.

Еще одно замечание по использованию Typeface.createFromAsset() функция. Когда у меня было много звонков, это значительно повлияло на время инфляции. Чтобы преодолеть эту проблему, мы создали единый экземпляр Typeface как это

public static Typeface getTypeFace() {
        if (fromAsset == null) {
            fromAsset = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Medium.ttf");
        }
        return fromAsset;
    }
Другие вопросы по тегам