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

时间:2011-03-31 12:16:25

标签: 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.

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

3 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:0)

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

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

可以找到这些选项的详细信息here

答案 2 :(得分:-1)

选中define fonts styles。此外,您可以在应用级别的清单文件中引用此样式

<application
    android:theme="@style/Theme1">