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

bHa*_*aTh 71 android android-fonts

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

谢谢.

Zel*_*mir 147

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

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

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

  • 这个资产文件夹在哪里?我正在使用android studio,我可以在src下找到它/ (6认同)
  • 它不在src下,assets文件夹应该在你的主项目文件夹下(与src,res,gen,bin相同的级别)检查:http://developer.android.com/tools/projects/index html的 (4认同)
  • @Zelimir是不是有办法普遍参与这个项目?而不是采取每个TextView并设置它的字体? (3认同)

小智 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*/);
       }
   }
}
Run Code Online (Sandbox Code Playgroud)


Jan*_*ana 9

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

Typeface tf = Typeface.createFromAsset(getApplicationContext().getAssets(),"fonts/fontname.ttf");
textview.setTypeface(tf);
Run Code Online (Sandbox Code Playgroud)


小智 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);
      }
   }
}
Run Code Online (Sandbox Code Playgroud)


bHa*_*aTh 5

完成此操作的最简单方法是使用您的应用程序打包所需的字体.要执行此操作,只需在项目根目录中创建资产/文件夹,并将字体(以TrueType或TTF格式)放入资产中.例如,您可以创建assets/fonts /并将TTF文件放在那里.

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

有关这方面的更多参考,我得到了这个教程:

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