RuntimeException: native typeface cannot be made
One problem that's overlooked (by Android Studio users) is that the "assets/" folder is NOT on the same level as "src/". It is INSIDE "src/main/"
Because I didn't see this earlier, I spent two hours last night, and an hour this morning just trying to change the font in my navigation drawer.
I believe this is the same reason why pixlUI and calligraphy libraries did not work for me.
Related videos on Youtube
Alin
Just started Android App Dev - Trying to learn as much as I can about programming in general!
Updated on September 16, 2022Comments
-
Alin about 1 year
I'm trying to use a custom font on elements of a listview. So in my ListViewAdapter constructor I have:
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"); }
In getView method I apply this typeface to a textview. The problem is that I get a Runtime exception: native typeface cannot be made and I don't understand what seems to be the problem.
Here's the 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)
Also I wanted to mention that all my fonts are in src/main/assests/fonts folder.
-
njzk2 almost 10 yearsI understand your position. But as long as you don't indicate what you have attempted so far, what i can only see is that the question is very similar to the one I indicated and a dozen others, and therefore the answer should be the same as well.
-
njzk2possible duplicate of "Native typeface cannot be made" only for some people
-
-
Alin almost 10 yearsI don't think this is the problem because - the name and extension of the font are how I've added them in my code: OpenSans-Regular.ttf Thanks!
-
Alin almost 10 yearsGreat - this could work too...but the problem for me seems to be that when calling Typeface.createFromAsset(this.getAssets(), "MyriadPro-Cond.otf"); I get a RuntimeException: native typeface cannot be made - and the cause seems to be that getAssets returns null ... because when I call ex.getCause() in the catch clause it said simply...null.
-
Alin almost 10 yearsFrom what I understand - because Android Studio started using the Gradle build system - the assets folder should be under the "src/main" folder. -stackoverflow.com/questions/18302603/…
-
William Riley almost 10 yearsWas unaware you werent using ADT in Eclipse.
-
William Riley almost 10 yearsIsn't android studio in Beta? Id avoid it until its stable. Less headaches.
-
Alin almost 10 years:)) In this case I can't avoid it! I guess I have to find a solution for this and still using Android Studio
-
William Riley almost 10 yearsLol, just checking because in your question it says "assests" :)
-
Gem almost 9 years@William Better Create all your TypeFace objects in Application class as in most cases we have to use same typeface through out the project and its will consume high memory if we create it in each activity. Or correct me if i am wrong.
-
wsgeorge over 7 years@Fakher delive What version of AS are you using? This works on the current version (2.1)