设置后备字体Android应用程序

我正在开发一个需要支持多种语言的应用程序,包括某些较旧的
Android版本中不包含某些字体的应用程序.

相同的TextView可以包含多种语言的内容,因此设置单个TypeFace没有帮助,我需要有一个后备字体列表,当某些字符在首选字体中不可用时使用.

除此之外,如果可能的话,我还需要为其他元素使用相同的字体集(不仅仅是TextViews).

最佳答案 我有一个解决方法.我扩展了应用程序的Application类,并在那里全局设置字体.

对于后备字体,我阅读了Typeface的Android API代码,并从那里开始,我发现了一些隐藏的API.做各种各样的黑客攻击(反思,获取私有/隐藏类或方法,设置私有字段等),我终于使它适用于Android API版本21到23.不确定新的API,它不适用于旧的.

您可以在https://gist.github.com/nisargjhaveri/47acc83e66dcb347e05685ccfd3038e8查看我的代码

它正在工作,但即使我不建议使用它!

每次向用户显示文本时,更好的解决方案可能是在检测到每个字符的最佳字体后使用TypefaceSpans.我没试过这个.

另外,我过去两个月一直在玩android,所以在你接受我的建议之前要三思而后行! :P

点赞