@otha_marks
Этот метод работает для Android версии 8.0 (API 26) и выше. Для устройств с более ранними версиями Android можно использовать подход с использованием библиотеки Support Library.
Для этого можно использовать библиотеку Support Library 26.0.0 или выше и следовать этим дополнительным шагам:
- Импортируйте библиотеку Support Library в ваш проект:
1
|
implementation 'com.android.support:support-compat:26.0.0'
|
- Создайте папку "font" в папке "res" и поместите в нее ваш шрифт.
- В файле стилей styles.xml добавьте следующий код:
1
2
3
|
<style name="CustomFontFamily">
<item name="android:fontFamily">@font/font_name</item>
</style>
|
- Создайте файл attrs.xml в папке "res/values" с следующим содержимым:
1
2
3
4
5
|
<resources>
<declare-styleable name="CustomTextView">
<attr name="customFont" format="string"/>
</declare-styleable>
</resources>
|
- В файле макета (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" />
|
- Создайте класс 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();
}
}
}
|
- Теперь вместо 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.