无法检索字体资源

时间:2018-02-16 10:43:56

标签: java android fonts android-support-library

我正在使用compileSdktargetSdk版本27,在上一版本中,我为我的项目使用了新的字体资源功能但是在一天之后我为这行代码遇到了3次崩溃

Typeface typeface = ResourcesCompat.getFont(this, R.font.my_font);

并且崩溃报告说它是因为android.content.res.Resources$NotFoundException而无法检索字体资源。所有3次崩溃都发生在Android版5.1.1的用户身上。这是支持库中的错误还是我做错了什么?

5 个答案:

答案 0 :(得分:4)

遇到了同样的问题,注意到文档中的一个细节对您有所帮助:

  

通过支持以XML布局声明字体系列时   库,请使用应用程序名称空间来确保字体加载。

<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:app="http://schemas.android.com/apk/res-auto">
  <font app:fontStyle="normal" app:fontWeight="400" app:font="@font/myfont-Regular"/>
  <font app:fontStyle="italic" app:fontWeight="400" app:font="@font/myfont-Italic" />
</font-family>

我以前一直在使用'android'命名空间,更改为'app'命名空间可以使字体正确加载到较旧的设备上。

答案 1 :(得分:1)

在API级别16上将Downloadable fonts与Google Play服务9.2.56(模拟器)一起​​使用时,我遇到了相同的崩溃。

如果您使用的是此设备,则设备必须具有11或更高版本的Google Play服务才能使用Google字体提供程序(请参见docs中的注释)。

答案 2 :(得分:0)

使用ResourcesCompat.getFont()时,R.font中的TTF文件存在相同的问题。

事实证明,由于某些原因,Android不喜欢此TTF文件。 logcat中没有任何信息,但是调试显示TypefaceCompat.createFromResourcesFontFile()失败。

我用另一个类似的字体替换了TTF文件,此后没有问题。

答案 3 :(得分:0)

就我而言,即使将Gradle版本升级到最新版本也不起作用。 对我有用的是一个非常简单的解决方案,将依赖项版本更新为最新版本。我不知道您的情况是否可行,但是也许您应该尝试一次。

答案 4 :(得分:0)

在 API 级别 16 上使用可下载字体

字体需要下载,因此最好检查互联网连接并下载它们,即使它们是从字体文件夹中提供的。

相关问题