Android Typeface createFromAsset

69,468

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());
Share:
69,468
Caleb Bramwell
Author by

Caleb Bramwell

Updated on August 05, 2022

Comments

  • Caleb Bramwell
    Caleb Bramwell almost 2 years

    I Have a Custom View which draws text onto the Canvas. I want to change the font 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 passing Typeface through from my Activity but when I do it it doesn't change the font.

  • Caleb Bramwell
    Caleb Bramwell over 10 years
    I did that at first, but then cam across this: stackoverflow.com/questions/16821182/…
  • Caleb Bramwell
    Caleb Bramwell over 10 years
    No, that is why I asked the question.
  • sivi
    sivi about 9 years
    thanks 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
    weston over 7 years
    How does that prevent creating a new typeface every time?
  • Sercan Samet Savran
    Sercan Samet Savran about 4 years
    Hey, 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.