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

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

谢谢。

您需要在您的项目的资产文件夹下创build字体文件夹,并将TTF放入其中。 然后在你的Activity的onCreate()

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

请注意,并非所有的TTF都可以使用。 在我尝试的时候,它只是为了一个子集(在Windows上是用小写字母写的)。

您可以使用自定义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*/); } } } 

在assets文件夹中创build一个名为fonts的文件夹,并从下面的链接添加片段。

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

要实现你需要使用字体通过下面的示例

 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); } } } 

最简单的方法是将所需字体打包到您的应用程序中。 为此,只需在项目根目录下创build资产/文件夹,然后将字体(以TrueType或TTF格式)放入资产中。 例如,您可能会创build资产/字体/并将TTF文件放在那里。

然后,您需要告诉您的小部件使用该字体。 不幸的是,你不能再使用布局XML来实现这一点,因为XML并不知道任何你可能被隐藏的应用程序资源。 相反,您需要通过调用Typeface.createFromAsset(getAssets(),“fonts / HandmadeTypewriter.ttf”)来更改Java代码,然后将创build的Typeface对象通过setTypeface()传递给TextView。

这里有更多的参考是我得到这个教程:

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

我推荐这种方法,它非常好的添加自定义字体的名称在styles.xml中的typeface ,并将您的字体集到assets文件夹。

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

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

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