我正在开发一款需要支持多种语言的应用,其中包括某些较旧Android版本中不包含某些字体的应用。
相同的TextView可以包含多种语言的内容,因此设置单个TypeFace没有帮助,我需要有一个后备字体列表,当某些字符在首选字体中不可用时使用。
除此之外,如果可能的话,我还需要为其他元素使用相同的字体集(不仅仅是TextViews)。
答案 0 :(得分:2)
我有一个解决方法。我扩展了应用程序的Application类,并在那里全局设置字体。
对于后备字体,我阅读了Typeface
的Android API代码,并从那里开始,我找到了一些隐藏的API。做各种各样的黑客攻击(反思,获取私有/隐藏类或方法,设置私有字段等),我终于使它适用于Android API版本21到23.不确定新的API,它不适用于旧的。
您可以在https://gist.github.com/nisargjhaveri/47acc83e66dcb347e05685ccfd3038e8
查看我的代码它正在工作,但即使我不建议使用它!
更好的解决方案可能是在每次向用户显示文本后,在检测到每个字符的最佳字体后使用TypefaceSpans。我没试过。
另外,我过去两个月一直在玩android,所以在你接受我的建议之前要三思而后行! :P