Ответ 1
По какой-либо причине файл шрифта поврежден или неподдерживается. Вы можете загрузить его на SD-карту и загрузить ее из файла, чтобы убедиться, что это не проблема с вашими активами.
Я пытаюсь использовать шрифт, который я нашел в Интернете, но проблема в том, что я получаю FC с "родным шрифтом не может быть сделано".
Вот код в getView моего ListVIew:
holder.tv_SuraName =(TextView)convertView.findViewById(R.id.Start_Name);
holder.tv_SuraName.setTypeface(Typeface.createFromAsset(mContext.getAssets(), "suralist_font.ttf"));
Может ли кто-нибудь сказать мне, почему я могу использовать пользовательский ром? Вы можете получить его ЗДЕСЬ.. файл .ttf
По какой-либо причине файл шрифта поврежден или неподдерживается. Вы можете загрузить его на SD-карту и загрузить ее из файла, чтобы убедиться, что это не проблема с вашими активами.
Моей проблемой было неправильное размещение папки с ресурсами.
При использовании Android Studio папка с ресурсами должна находиться внутри наборов источников, например.
SRC/главная/активы/
Найден в этот ответ
В основном есть 4 вещи, которые могут вызвать это:
Двойная проверка расширения не в шапке, т.е. suralist_font.TTF
Шрифты часто появляются, кажется, идут таким образом, и это может быть упущено.
У меня была эта же проблема, я создал свою в активах > шрифты > whatever.ttf и получал ту же ошибку. Я добавил расширение шрифтов (fonts/whatever.ttf), и он исправил проблему в каждом случае.
holder.tv_SuraName =(TextView)convertView.findViewById(R.id.Start_Name);
holder.tv_SuraName.setTypeface(Typeface.createFromAsset(mContext.getAssets(), "fonts/suralist_font.ttf"));
Я использую андроид-студию, в моем случае проблема была связана с папкой с папками с ресурсами, в папке Eclipse для папки с активами res/assets/, но в Android Studio ее src/main/активы/ Итак, я просто переместил файл шрифта на этот путь и, наконец, решил проблему.
Скорее старый поток, но я хочу добавить еще одну причину, по которой это может случиться: вы должны установить представление содержимого перед вызовом шрифта. Пример ниже
Работает не:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView title = (TextView)findViewById(R.id.tvTitle);
Typeface font = Typeface.createFromAsset(this.getAssets(), "fonts/whatever.ttf");
title.setTypeface(font);
setContentView(R.layout.main);
}
Работает!
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); // <-- call before typeface
TextView title = (TextView)findViewById(R.id.tvTitle);
Typeface font = Typeface.createFromAsset(this.getAssets(), "fonts/whatever.ttf");
title.setTypeface(font);
}
Как CommonsWare заявляет в этот ответ
Я бы предположил, что проблема с самим шрифтом. Эта ошибка будет вызван, когда собственный код в ОС попытается загрузить начертание.
В любом случае попробуйте следующее:
holder.tv_SuraName = (TextView)convertView.findViewById(R.id.Start_Name);
Typeface Font = Typeface.createFromAsset(this.getAssets(),"suralist_font.ttf");
holder.tv_SuraName.setTypeface(Font);
Надеюсь, это поможет
Typeface.createFromAsset утечка потока ресурсов: http://code.google.com/p/android/issues/detail?id=9904
У меня была такая же проблема с COMIC.TTF от комикса MS MS Windows. Поскольку исходный файл, который я разместил в папке assets/fonts, был в верхнем регистре, как указано выше, я должен был ввести его точно в верхнем регистре. Typeface.createFromAsset(getAssets(), "fonts/COMIC.TTF" );
выясняется, что проблема была вызвана нижним регистром: Typeface.createFromAsset(getAssets(), "fonts/comic.ttf" );
Обратите внимание, что это связано с поврежденным файлом или вы поместили файл в неправильную папку.
Согласно документации на Android здесь
Основные/активы/ Это пусто. Вы можете использовать его для хранения файлов сырых активов. Файлы, которые вы сохраняете здесь, скомпилированы в файл .apk as-is и исходное имя файла сохраняется. Вы можете перемещаться по этому каталогу так же, как обычная файловая система с использованием URI и читать файлы в виде потока байтов с помощью AssetManager. Например, это хорошее место для текстур и игровых данных.
Поэтому структура вашей папки должна быть yourmodule/main/assets (например, *** pp/main/assets ***)
Что сработало для меня, сначала изменило имя моего шрифта только на нижний регистр и подчеркивание: от Amatic-Sc.ttf до amatic_sc.ttf.
Затем в методе set.TypeFace измените assets/fonts/amatic_sc.ttf на шрифты/amatic_sc.ttf.
Я отлаживаю эту ошибку в Android Studio навсегда. Очистите и восстановите проект после добавления шрифтов в каталог ресурсов, исправил проблему для меня.
Просто сделал build --> clean
и начал рендеринг.
У меня была такая же проблема, которая произошла на Android 4.0.3-4.0.4 (100% воспроизводимый на эмуляторе IceCreamSandwich mips 4.0.3).
Проблема заключалась в том, что шрифты TTF, которые у меня были, были неправильными, несмотря на то, что почти все версии Android смогли загрузить эти TTF-шрифты. Поэтому я использовал https://cloudconvert.com/woff-to-ttf (так как у меня также были файлы woff), чтобы создавать новые TTF-шрифты, которые решили мою проблему.
Либо ваш файл шрифта поврежден, иначе вы ошиблись при написании при вызове своего имени файла. У меня была такая же проблема, потому что имя файла, указанное в папке с ресурсами, было
roboto_black.ttf
и, объявляя в java файле, я использовал его как:
roboto_blak.ttf
Если ваши .ttf файлы находятся в папке с ресурсами, используйте:
Typeface type_bold = Typeface.createFromAsset(getAssets(), "roboto_black.ttf");
Если он находится в папке шрифтов, используйте:
type_bold = Typeface.createFromAsset(getAssets(), "fonts/roboto_black.ttf");
Надеюсь, что это поможет!