У меня есть пользовательский расширенный TextView
Я использую для пользовательских шрифтов в своем приложении, но по какой-то причине я продолжаю получать исключение во время выполнения, Не находите этот шрифт.Runtime Exception: Шрифт не найден для каждого шрифта, который я пробовал - Android
Формат каталога Я использую это main > assets > fonts > Portrait-Light.ttf
Я искал везде для решения, но все они, кажется, округление до тех же ответов на SO.
CustomFontTextView.java:
public class CustomFontTextView extends TextView {
public CustomFontTextView(Context context) {
super(context);
applyCustomFont(context);
}
public CustomFontTextView(Context context, AttributeSet attrs) {
super(context, attrs);
applyCustomFont(context);
}
public CustomFontTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
applyCustomFont(context);
}
private void applyCustomFont(Context context) {
Log.e("it gets here", "custom font");
Typeface customFont = FontCache.getTypeface("Roboto-Italic.ttf", context);
setTypeface(customFont);
}
}
FontCache.java
class FontCache {
private static HashMap<String, Typeface> fontCache = new HashMap<>();
static Typeface getTypeface(String fontname, Context context) {
Typeface typeface = fontCache.get(fontname);
if (typeface == null) {
try {
typeface = Typeface.createFromAsset(context.getAssets(), "fonts/" + fontname);
} catch (Exception e) {
Log.e("failed", e.getMessage());
}
fontCache.put(fontname, typeface);
}
return typeface;
}
}
XML:
<icn.premierandroid.misc.CustomFontTextView
android:id="@+id/switch_description"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:textSize="14sp"
android:textColor="@color/colorPrimary"
android:gravity="center_horizontal"
android:text="@string/are_you_over_18_years_old"/>
Я ВГА e пробовал это в разных форматах, таких как .otf
и с разными шрифтами, такими как Roboto-Italic.ttf
и еще один случайный из dafont.com под названием Sunset-Clouds.ttf
, но все же я получаю сообщение об ошибке, что происходит? это должно работать. На всякий случай я даже обновил все плагины, такие как Gradle, Grade-Wrapper и Android.
Я также попробовал единственный способ сделать это:
AssetManager am = context. getApplicationContext(). getAssets();
Typeface font = Typeface.createFromAsset(
am, String.format(Locale.US, "fonts/%s", "portrait-light.ttf"));
я упускаю что-то?
Update:
Удаление улова показывает эту StackTrace.
процесса: icn.premierandroid, PID: 3829 java.lang.RuntimeException: Невозможно запустить активность ComponentInfo {icn.premierandroid/icn.premierandroid.RegisterActivity}: android.view.InflateException: Binary линия XML-файл # 100: Ошибка накачивания класс icn.premierandroid.misc.CustomFontTextView на android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2702) в android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2767) ... ..
Причина: android.view.InflateException: B Инары XML файл строка # 100: Ошибка при наполнении класса icn.premierandroid.misc.CustomFontTextView в android.view.LayoutInflater.createView (LayoutInflater.java:640) в android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:750) в android.view.LayoutInflater.rInflate (LayoutInflater.java:813)
.....
Вызванный: java.lang.reflect.InvocationTargetException в java.lang.reflect.Constructor.newInstance (Нативный метод) at java.lang.reflect.Constructor.newInstance (Конструктор.Java: 288) в android.view.LayoutInflater.createView (LayoutInflater.java:614)
....
Вызванный: java.lang.RuntimeException: Шрифт активов не найден шрифтов/GleegooRegular. TTF в android.graphics.Typeface.createFromAsset (Typeface.java:272) на icn.premierandroid.misc.FontCache.getTypeface (FontCache.java:21) в icn.premierandroid.misc.CustomFontTextView.applyCustomFont (CustomFontTextView.java : 28) at icn.premierandroid.misc.CustomFontTextView. (CustomFontTextView.java:18) at java.lang.reflect.Constructor .newInstance (Native Method)
.....
UPDATE 2:
Хорошо, так что это странно обходным для этого. Очевидно, андроид-студия не нравится, когда вы добавляете папку assets
прямо в папку main
внутри app/src/main
. Сначала необходимо добавить его в папку app/src/main/res
, а затем переместить в папку main
. Не знаю, почему это так, но это решило мою проблему.
пожалуйста, напишите об ошибке StackTrace –
@maxost, добавил его для вас, бутон. – BIW
«Font asset not found fonts/GleegooRegular.ttf», я не уверен, но я не вижу этот шрифт в вашем каталоге шрифтов. – harshitpthk