我正在开发一款需要支持多种语言的应用,包括某些较旧的 Android 版本中未包含字体的应用。
同一个 TextView 可以包含多种语言的内容,因此设置单个 TypeFace 无济于事,我需要有一个后备字体列表,以便在某些字符在首选字体中不可用时使用。
为此,如果可能的话,我还需要为其他元素(不仅是 TextView)使用相同的字体集。
最佳答案
我有一个解决方法。我扩展了应用程序的应用程序类并在那里全局设置了字体。
对于后备字体,我阅读了 Typeface
的 Android API 代码并从那里开始,我发现了一些隐藏的 API。进行各种黑客攻击(反射、获取私有(private)/隐藏类或方法、设置私有(private)字段等),我终于让它适用于 Android API 版本 21 到 23。不确定较新的 API,它不适用于年长者。
您可以在 https://gist.github.com/nisargjhaveri/47acc83e66dcb347e05685ccfd3038e8 查看我的代码
它是有效的,但即使我不推荐使用它!
更好的解决方案可能是使用 TypefaceSpans ,在检测到每个字符的最佳字体后,每次向用户显示文本时。我没有尝试这个。
另外,我最近两个月一直在玩安卓,所以在接受我的建议之前请三思! :P
关于android - 设置回退字体 android 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37483556/