android - 设置回退字体 android 应用程序

标签 android fonts localization android-fonts android-typeface

我正在开发一款需要支持多种语言的应用,包括某些较旧的 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/

相关文章:

android - 不移动下一个 Activity 从android中的另一个 Activity 发送数据

android - 如何修复未找到 ID Watson Assistant 错误的代理定义?

iOS - 更改语言后不应用默认值

android - 如何创建视频动态壁纸

android - 使用 adb 启动 youtube 视频?

css - 透明背景上的透明字体

android - 在 Android 的 ListActivity 上设置字体

qt - QFont.toString() 的格式是否在 Qt 版本中有记录和/或稳定?

angular - 如何在导出的函数中禁用拦截器?

.net - 如何在正确的语言环境中将 float 插入 SQL 表