如何将外部字体添加到Android应用程序

时间:2011-04-12 11:12:22

标签: android android-fonts

我正在为我的Android应用程序寻找一些时尚的字体。但问题是如何让我的Android应用程序支持外部字体。

谢谢。

7 个答案:

答案 0 :(得分:147)

您需要在项目的assets文件夹下创建fonts文件夹并将TTF放入其中。然后在你的Activity onCreate()

TextView myTextView=(TextView)findViewById(R.id.textBox);
Typeface typeFace=Typeface.createFromAsset(getAssets(),"fonts/mytruetypefont.ttf");
myTextView.setTypeface(typeFace);

请注意,并非所有TTF都有效。在我进行实验时,它只适用于一个子集(在Windows上,其名称以小写字母书写)。

答案 1 :(得分:12)

您可以使用自定义TextView为整个应用程序使用自定义字体,这是

的示例
public class MyTextView extends TextView {

   Typeface normalTypeface = Typeface.createFromAsset(getContext().getAssets(), Constants.FONT_REGULAR);
   Typeface boldTypeface = Typeface.createFromAsset(getContext().getAssets(),  Constants.FONT_BOLD);

   public MyTextView(Context context, AttributeSet attrs, int defStyle) {
       super(context, attrs, defStyle);
   }

   public MyTextView(Context context, AttributeSet attrs) {
       super(context, attrs);
   }

   public MyTextView(Context context) {
       super(context);
   }

   public void setTypeface(Typeface tf, int style) {
       if (style == Typeface.BOLD) {
           super.setTypeface(boldTypeface/*, -1*/);
       } else {
           super.setTypeface(normalTypeface/*, -1*/);
       }
   }
}

答案 2 :(得分:9)

在资源文件夹中创建名为fonts的文件夹,并从以下链接添加代码段。

Typeface tf = Typeface.createFromAsset(getApplicationContext().getAssets(),"fonts/fontname.ttf");
textview.setTypeface(tf);

答案 3 :(得分:7)

要实现您需要使用Typeface,请参阅下面的示例

Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/Roboto/Roboto-Regular.ttf");
for (View view : allViews)
{
   if (view instanceof TextView) 
   {
      TextView textView = (TextView) view;
      textView.setTypeface(typeface);
      }
   }
}

答案 4 :(得分:5)

  

实现此目的的最简单方法是打包所需的字体   与您的申请。为此,只需在中创建资产/文件夹即可   项目根目录,并将您的字体(以TrueType或TTF格式)放入   资产。例如,您可以创建assets / fonts /并将其设置为   那里有TTF文件。

     

然后,您需要告诉您的小部件使用该字体。不幸,   你不能再使用布局XML,因为XML不知道   关于您作为应用程序资产可能隐藏的任何字体。   相反,您需要通过调用来进行Java代码的更改   Typeface.createFromAsset(getAssets(),“fonts / HandmadeTypewriter.ttf”),   然后获取创建的Typeface对象并将其传递给您   TextView通过setTypeface()。

这里有更多的参考资料,我得到了这个教程:

http://www.androidguys.com/2008/08/18/fun-with-fonts/

答案 5 :(得分:2)

我建议approachtypeface中的自定义字体名称添加到styles.xml并将您的字体设置到assets文件夹中,这非常好。

答案 6 :(得分:2)

除上述答案外,

还有一点。 在片段中使用字体时,字体实例化应该在onAttach方法(覆盖)中完成,如下所示:

@Override
public void onAttach(Activity activity){
    super.onAttach(activity);
    Typeface tf = Typeface.createFromAsset(getApplicationContext().getAssets(),"fonts/fontname.ttf");
}

原因
片段附加到活动之前有很短的时间。如果在将片段附加到活动之前调用CreateFromAsset方法,则会发生错误。