如何将外部字体添加到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。
这里有更多的参考是我得到这个教程:
我推荐这种方法,它非常好的添加自定义字体的名称在styles.xml
中的typeface
,并将您的字体集到assets
文件夹。
除了上面的答案还有一点 。 在片段中使用字体时,应在onAttach方法(覆盖)中完成字体实例化,如下所示:
@Override public void onAttach(Activity activity){ super.onAttach(activity); Typeface tf = Typeface.createFromAsset(getApplicationContext().getAssets(),"fonts/fontname.ttf"); }
原因 :
片段附加到活动之前有很短的时间。 如果在将片段附加到活动之前调用CreateFromAsset方法,则会发生错误。
- SQlite获取最近的地点(有经度和纬度)
- 如何在小部件右侧没有向下三angular形的情况下创buildandroid微调器
- Android碎片和animation
- 方法setDrawerListener已弃用
- 同步Android应用程序和networking服务器之间的数据
- 用Proguard编译给出SimException:“局部variablestypes不匹配”
- 试图从视图中删除片段给我mNextAnim NullPointerException
- 在Android中更改滚动条颜色
- 扩展LifecycleActivity,Activity,ActionbarActivity和AppCompactActivity之间的区别?