Я использую AndroidX в своем приложении Kotlin и пытаюсь добавить собственные шрифты. У меня есть папка в res / font с файлами .ttf и 2 семействами шрифтов (v26 и normal). v26 содержит префиксы android:, а другой файл имеет префиксы app :.
Я также добавил реализации appcompat и legacy-support в gradle, но почему-то все еще не могу заставить шрифт правильно отображаться на Android 6.0 (работает на новых устройствах). Я устанавливаю семейство шрифтов в AppTheme как:
<item name = "fontFamily">@font/avalon</item>
Понятия не имею, что еще можно попробовать. У кого-нибудь была такая же проблема?
Я думаю, что вы не можете использовать fontFamily для пользовательских шрифтов в старых API.
Однако вы можете создать свой собственный TextView (расширить стандартный) и установить собственный шрифт:
public class MyTextView extends TextView {
public MyTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}
public MyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}
public MyTextView(Context context) {
super(context);
init();
}
private void init() {
if (!isInEditMode()) {
Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/custom.ttf");
setTypeface(tf);
}
}
}
Или установить такой шрифт:
Typeface typeface=Typeface.createFromAsset(getAssets(), "fonts/custom.ttf");
myTextView.setTypeface(typeface);
По моему опыту, вы должны создавать собственные компоненты с настраиваемыми шрифтами - custom editText, textView и т. д. Кроме того, вы можете использовать настраиваемые атрибуты для установки настраиваемого шрифта из XML, чтобы вы могли указать шрифт и прочитать его в настраиваемых TextView и setTypeface.
У меня есть собственные стили для компонентов с настраиваемым шрифтом, но он по-прежнему работает только для новых API, несмотря на использование совместимости приложений. Но сейчас я попробую собственный класс для элемента.
Какую версию appCompat вы используете? Попробуйте реализовать com.android.support:appcompat-v7:26.1.0
реализация 'androidx.appcompat: appcompat: 1.0.0' Я использую androidx appcompat (так как я использую android x во всем приложении)
Попробуйте использовать обычную совместимость приложений и посмотрите, работает ли она. Эта версия у меня работает на 100%.
Также убедитесь, что вы используете AppCompatActivity и android.support.v7.widget.AppCompatTextView.
И есть ли способ установить глобальный шрифт с кодом?