Android Typeface createFromAsset
Solution 1
You can use your View
's getContext()
method to get the current Context
, then use it to get the assets:
Typeface font = Typeface.createFromAsset(getContext().getAssets(), "robotobold.ttf");
Solution 2
First of all, you have to keep your assets
folder inside your project
and not inside src/main
.. And then, create a folder called fonts
inside assets
. then, put the specific font typeface ttf files
inside it.You can use the font typeface in coding like:
Typeface type = Typeface.createFromAsset(getAssets(),"fonts/filename.ttf");
textview.setTypeface(type);
Solution 3
created a folder src/main/assets and placed font files in there.
in Activity
Typeface font = Typeface.createFromAsset(getAssets(), "Mukta-Regular.ttf");
tv.setTypeface(font);
in Fragment
Typeface.createFromAsset(getActivity().getAssets(), "Mukta-Regular.ttf");
tv.setTypeface(font);
Solution 4
In order to reuse typefaces in my projects I create a class full of typeface methods, this way I dont have to create a new typeface every time.
I call the class FontClass
and in the class there is a method for each typeface I need to use e.g:
public static Typeface getOpenSansRegular(Context c){
return Typeface.createFromAsset(c.getAssets(), "OpenSans-Light.ttf");
}
Then I can use them like so:
TextView text = (TextView) findViewById(R.id.textview);
text.setTypeface(FontClass.getOpenSansRegular(getApplicationContext());
Caleb Bramwell
Updated on August 05, 2022Comments
-
Caleb Bramwell almost 2 years
I Have a Custom View which draws text onto the
Canvas
. I want to change thefont
to a font stored in the assets folder.I am using
Android Studio
so I created a folder src/main/assets and placed my ttf files in there.Paint txt = new Paint() Typeface font = Typeface.createFromAsset(getAssets(), "robotobold.ttf"); txt.setTypeface(font);
Problem is
Android Studio
doesn't recognize getAssets() inside my Custom View, however, it recognizes it inside my Activity. I have tried passingTypeface
through from myActivity
but when I do it it doesn't change thefont
. -
Caleb Bramwell over 10 yearsI did that at first, but then cam across this: stackoverflow.com/questions/16821182/…
-
Caleb Bramwell over 10 yearsNo, that is why I asked the question.
-
sivi about 9 yearsthanks I was trying "/fonts/ ..." and android.os just could not grab the font. Removing dash, made the android system able to recognize the font file.
-
weston over 7 yearsHow does that prevent creating a new typeface every time?
-
Sercan Samet Savran about 4 yearsHey, what do you mean by your "inside your project"? The app can't find the fonts, I have them in "/src/main/assets/font" too.