为了在Android应用程序中使用自定义字体,似乎有两种方法:
可以认为字体资源仅适用于预先打包在APK中的字体,而字体资产更加灵活,因为您可以从APK内外的任意文件创建Typeface吗?
更新:经过一些实验,看起来字体资源是在AppWidget TextView中设置自定义字体的唯一方法,而不必手动将其绘制为位图,但这需要设备实际运行API 26(在此特定情况下使用支持库无法帮助)。
- 传统方式:将TTF或OTF文件放置在
/assets/fonts
目录中,然后使用Typeface.createFromAsset(getAssets(), "fonts/custom.ttf")
创建Typeface
。 - 自API 26以来的本地方式,或者自API 16以来的AppCompat方式:通过在
res/font
文件夹中放置小写的TTF/OTF文件并直接在XML布局中引用它们android:fontFamily="@font/custom"
,或者使用ResourcesCompat.getFont(this, R.font.custom)
在程序中访问它们来创建XML字体族。
可以认为字体资源仅适用于预先打包在APK中的字体,而字体资产更加灵活,因为您可以从APK内外的任意文件创建Typeface吗?
更新:经过一些实验,看起来字体资源是在AppWidget TextView中设置自定义字体的唯一方法,而不必手动将其绘制为位图,但这需要设备实际运行API 26(在此特定情况下使用支持库无法帮助)。