如何在 Android 中设置应用程序范围的字体?

How to set a app-wide font in Android?

我正在开发一个应用程序,我需要为所有控件(textview、edittext、spinner 等)设置自定义字体 (Lato)。我已经在 assets 文件夹中安装了 Lato.ttf。我知道如何更改每个元素的字体,但我的应用程序中有数百个控件,这对我来说不是一个可行的解决方案。

我正在为 Android 4 及以上构建。

您需要手动设置它,遍历所有 children 根 ViewGroup,通常在 onCreate() in ActivityonCreateView() in Fragment

这个项目可能会有帮助: https://github.com/chrisjenx/Calligraphy

为什么不使用 BaseActivity 并让所有 Activities/Fragments 扩展此 class。在您的 BaseActivity 中,您可以设置要使用的自定义字体。

我认为最好的方法是创建自己的 class。

例如 TextView,创建一个扩展 TextView 的 class MyTextView。在每个构造函数中添加对 init 方法的调用:

public void init() {
     Typeface typeface = Typeface.createFromAsset(context.getAssets(), "your_ttf_file");
      setTypeface(typeface);
}

然后将 xml 文件中所有出现的 TextView 替换为 your.package.MyTextView

那么你所有的TextView字体都不错。