在android中如何为整个应用程序应用字体?

我想应用一些字体说Times New Roman只适用于我的应用程序。 不是对整个系统而是对特定的观点。 据我所知

要将字体应用于特定视图,我们将字体文件存储在资产文件夹中,并按如下方式进入应用程序。

1] Typeface mFace = Typeface.createFromAsset(getContext().getAssets(), "fonts/samplefont.ttf"); textView.setTypeface(mFace); 2] To apply font to whole application I can replace the DroidSans.ttf file with my font file. 

我可以使用第一种方式将字体应用到我的应用程序,但它不是一个好的解决方案,因为我需要在任何地方进行修改,如果有更好的方法,我不想这样做。

选中此项以定义字体样式 。 此外,您可以在应用程序级别的清单文件中引用此样式

  

我创建了一个自定义textview小部件,并在构造函数中调用了这段代码:

 public static void SetCustomFont (TextView t, String fontName, Context c) { Typeface tf = Typeface.createFromAsset(c.getAssets(), fontName); t.setTypeface(tf); } 

我在整个应用程序中使用相同的字体,所以我将fontName放在constuctor中,然后对TextView进行全局查找/替换

Android不支持在整个应用程序中应用字体(请参阅此问题)。 您有4个选项可以为整个应用设置字体:

  • 选项1:应用reflection以更改系统字体
  • 选项2:为需要自定义字体的每个View创建和子类化自定义View类
  • 选项3:实现一个View Crawler,它遍历当前屏幕的视图层次结构
  • 选项4:使用第三方库。

这些选项的详细信息可以在这里find。