2013-11-18 2 views
11

Я пытаюсь использовать собственный шрифт для элементов списка. Так что в моем ListViewAdapter конструктор у меня есть:RuntimeException: родной шрифт не может быть сделан

private Context context; 
private List<Project> projects; 
private Typeface tf; 
public ListViewAdapter(Context context, int resource, List<Project> projects) { 
    super(context, resource, projects); 
    this.context = context; 
    this.projects = projects; 
    tf = getTypefaceForListItems(); 
} 

public Typeface getTypefaceForListItems() 
{ 
    return Typeface.createFromAsset(context.getAssets(), "fonts/OpenSans-Regular.ttf"); 
} 

В методе GetView я применяю эту гарнитуру к TextView. Проблема в том, что я получаю исключение Runtime: родной шрифт не может быть создан, и я не понимаю, что кажется проблемой.

Вот StackTrace:

java.lang.RuntimeException: native typeface cannot be made 
      at android.graphics.Typeface.<init>(Typeface.java:175) 
      at android.graphics.Typeface.createFromAsset(Typeface.java:149) 
      at com.maxcode.clientcheck.ProjectListAdapter.getTypefaceForListItems(ProjectListAdapter.java:41) 
      at com.maxcode.clientcheck.ProjectListAdapter.<init>(ProjectListAdapter.java:25) 
      at com.maxcode.clientcheck.ProjectListActivity$GetProjectsAsyncTask.onPostExecute(ProjectListActivity.java:154) 
      at com.maxcode.clientcheck.ProjectListActivity$GetProjectsAsyncTask.onPostExecute(ProjectListActivity.java:91) 
      at android.os.AsyncTask.finish(AsyncTask.java:631) 
      at android.os.AsyncTask.access$600(AsyncTask.java:177) 
      at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644) 
      at android.os.Handler.dispatchMessage(Handler.java:99) 
      at android.os.Looper.loop(Looper.java:137) 
      at android.app.ActivityThread.main(ActivityThread.java:4745) 
      at java.lang.reflect.Method.invokeNative(Native Method) 
      at java.lang.reflect.Method.invoke(Method.java:511) 
      at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786) 
      at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 
      at dalvik.system.NativeStart.main(Native Method) 

Кроме того, я хотел бы отметить, что все мои шрифты в главном/assests папке/SRC/шрифты.

+1

Возможный дубликат [«Родной шрифт не может быть создан» только для некоторых людей] (http://stackoverflow.com/questions/12766930/native-typeface-cannot-be-made-only-for-some-people) – njzk2

+0

(также, пожалуйста, перейдите в ваше исключение, прежде чем задавать новый вопрос, или, если вы не найдете свой ответ в ранее заданных вопросах, укажите все, что вы пробовали.) – njzk2

+0

Я пробовал решение, указанное в ссылке, - но исключение сохраняется. Я тоже искал ответ, но не повезло - вот почему я опубликовал этот вопрос! ;) – Alin

ответ

0

я мои шрифты как это: (я объявляю их в моем MainActivity)

public static TypeFace FONT_HEADINGS; 

Затем я поставил их в OnCreate()

FONT_HEADINGS = Typeface.createFromAsset(this.getAssets(), "MyriadPro-Cond.otf"); 

На данный момент, я могу сослаться на них на протяжении всего моего приложения, как:

sampleTextView.setTypeFace(MainActivity.FONT_HEADINGS); 

Edit:

«src/main/assests/fonts»

папка «активы» не должна находиться в папке «src». Он принадлежит на том же уровне, что и src, res и т. Д.

+0

Я не думаю, что это проблема, потому что - имя и расширение шрифта - это то, как я добавил их в свой код: OpenSans-Regular.ttf Спасибо! – Alin

+1

Отлично - это тоже может работать ... но проблема для меня, похоже, в том, что при вызове Typeface.createFromAsset (this.getAssets(), «MyriadPro-Cond.otf "), я получаю исключение RuntimeException: родной шрифт не может быть создан - и причина в том, что getAssets возвращает null ... потому что, когда я вызываю ex.getCause() в предложение catch, он просто сказал ... null. – Alin

+0

См. Мое редактирование, возможно, поэтому его не получают ваши «активы» –

-1

OpenSans-Regular.ttf должен находиться под папкой шрифтов.

структура папок должна выглядеть так:

assets-> Шрифты -> OpenSans-Regular.ttf

i think by mistake you have added under assets folder 
12

Одна из проблем, которая упускается (пользователями Android Studio) является то, что "активы /" папка НЕ ​​находится на том же уровне, что и «src /». Это INSIDE "src/main /"

Поскольку я не видел этого раньше, я провел два часа прошлой ночью, а час этим утром просто пытался изменить шрифт в своем навигационном ящике.

Я считаю, что по той же причине почему pixlUI и библиотеки каллиграфии не работают для меня.

+0

У меня такая же ошибка, но это не сработало для меня – Fakher

+0

Не работа У меня такая же проблема !!!!! – delive

+0

@Fakher delive Какая версия AS вы используете? Это работает с текущей версией (2.1) – wsgeorge

Смежные вопросы