如何在 Android 中设置应用程序范围的字体?
How to set a app-wide font in Android?
我正在开发一个应用程序,我需要为所有控件(textview、edittext、spinner 等)设置自定义字体 (Lato)。我已经在 assets
文件夹中安装了 Lato.ttf
。我知道如何更改每个元素的字体,但我的应用程序中有数百个控件,这对我来说不是一个可行的解决方案。
我正在为 Android 4 及以上构建。
您需要手动设置它,遍历所有 children 根 ViewGroup,通常在 onCreate()
in Activity
或 onCreateView()
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
字体都不错。
我正在开发一个应用程序,我需要为所有控件(textview、edittext、spinner 等)设置自定义字体 (Lato)。我已经在 assets
文件夹中安装了 Lato.ttf
。我知道如何更改每个元素的字体,但我的应用程序中有数百个控件,这对我来说不是一个可行的解决方案。
我正在为 Android 4 及以上构建。
您需要手动设置它,遍历所有 children 根 ViewGroup,通常在 onCreate()
in Activity
或 onCreateView()
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
字体都不错。