设置后备字体android app

时间:2016-05-27 12:25:50

标签: android fonts localization android-fonts android-typeface

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

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

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

1 个答案:

答案 0 :(得分:2)

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

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

您可以在https://gist.github.com/nisargjhaveri/47acc83e66dcb347e05685ccfd3038e8

查看我的代码

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

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

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