我正在寻找一些时尚的字体用于我的安卓应用程序。但问题是如何使我的安卓应用程序支持外部字体。
谢谢。
你需要在项目的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 系统上,只有名称采用小写字母书写的字体可以正常工作)。您可以在此处使用自定义字体为整个应用程序设置自定义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*/);
}
}
}
Typeface tf = Typeface.createFromAsset(getApplicationContext().getAssets(),"fonts/fontname.ttf");
textview.setTypeface(tf);
要实现此功能,请使用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);
}
}
}
allViews
,您必须使用 getChildCount()
循环遍历布局,这样您就可以用简单的 for 循环替换 foreach。 - Ahmed Hasn.除了上述答案外,在片段中使用字体时,应该在 onAttach 方法中(重写)进行字体实例化,如下所示:
@Override
public void onAttach(Activity activity){
super.onAttach(activity);
Typeface tf = Typeface.createFromAsset(getApplicationContext().getAssets(),"fonts/fontname.ttf");
}
原因: