Как изменить шрифты в android?

Пользователь

от otha_marks , в категории: Другие , год назад

Как изменить шрифты в android?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от autumn_parker , год назад

@otha_marks 

Для изменения шрифтов в Android вы можете выполнить следующие шаги:

  1. Получите необходимый шрифт в формате .ttf или .otf. Вы можете использовать свой собственный шрифт или выбрать его из множества бесплатных шрифтов, доступных в Интернете.
  2. Создайте папку "fonts" в папке "res" проекта Android. Если папка "fonts" уже существует, пропустите этот шаг.
  3. Переместите загруженный шрифт в папку "fonts".
  4. Откройте файл ресурсов styles.xml в папке "res/values" проекта.
  5. Внутри тега добавьте следующий код:
1
2
3
    <style name="CustomFontFamily">
        <item name="android:fontFamily">@font/font_name</item>
    </style>


  1. Замените "font_name" на имя вашего шрифта с расширением файла. Например, если ваш шрифт называется "myfont.ttf", вставьте "@font/myfont".
  2. Сохраните файл styles.xml.
  3. Откройте файл макета (layout) или стиля (style) в котором хотите использовать измененный шрифт.
  4. Добавьте атрибут "style" к соответствующему элементу макета или стиля. Например:
1
2
3
4
5
6
    <TextView
        android:id="@+id/textview"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Пример текста"
        style="@style/CustomFontFamily" />


  1. Сохраните и запустите ваше приложение. Теперь шрифты элементов макета, для которых был установлен стиль "CustomFontFamily", будут изменены на выбранный вами шрифт.


Обратите внимание, что данный подход работает на устройствах с Android 8.0 и выше. Для более ранних версий Android вам потребуется использовать дополнительные методы.

Пользователь

от clement.erdman , 5 месяцев назад

@otha_marks 

Этот метод работает для Android версии 8.0 (API 26) и выше. Для устройств с более ранними версиями Android можно использовать подход с использованием библиотеки Support Library.


Для этого можно использовать библиотеку Support Library 26.0.0 или выше и следовать этим дополнительным шагам:

  1. Импортируйте библиотеку Support Library в ваш проект:
1
implementation 'com.android.support:support-compat:26.0.0'


  1. Создайте папку "font" в папке "res" и поместите в нее ваш шрифт.
  2. В файле стилей styles.xml добавьте следующий код:
1
2
3
<style name="CustomFontFamily">
    <item name="android:fontFamily">@font/font_name</item>
</style>


  1. Создайте файл attrs.xml в папке "res/values" с следующим содержимым:
1
2
3
4
5
<resources>
    <declare-styleable name="CustomTextView">
        <attr name="customFont" format="string"/>
    </declare-styleable>
</resources>


  1. В файле макета (layout) используйте ваш созданный стиль и атрибут:
1
2
3
4
5
6
7
<TextView
    android:id="@+id/textview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Пример текста"
    style="@style/CustomFontFamily"
    app:customFont="font_name" />


  1. Создайте класс CustomTextView.java, где вы будете обрабатывать установку шрифта:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
public class CustomTextView extends AppCompatTextView {
    public CustomTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init(attrs);
    }

    private void init(AttributeSet attrs) {
        if (attrs != null) {
            TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.CustomTextView);
            String fontName = a.getString(R.styleable.CustomTextView_customFont);
            if (fontName != null) {
                Typeface typeface = Typeface.createFromAsset(getContext().getAssets(), "fonts/" + fontName + ".ttf");
                setTypeface(typeface);
            }
            a.recycle();
        }
    }
}


  1. Теперь вместо TextView используйте CustomTextView в вашем макете:
1
2
3
4
5
6
7
<com.example.CustomTextView
    android:id="@+id/textview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Пример текста"
    style="@style/CustomFontFamily"
    app:customFont="font_name" />


Это даст вам возможность использовать ваш шрифт на устройствах с Android версиями ниже 8.0.