可下载字体未正确缓存

Downloadable Fonts not caching correctly

我的应用程序通过 Support Library 27.0.2 使用 Android 可下载字体,根据 API Guide on Android Developers 在 XML 上设置自定义字体。除了第一次在屏幕上绘制每个字体系列外,这些字体都会正常应用。

例如:如果我打开 ActivityA,它的 Toolbar 将使用默认的 Roboto 显示 Tab1 标题,但 Tab2Tab3 将使用我的自定义字体。第二次打开 ActivityA(没有关闭应用程序)时,问题没有发生,所有选项卡都将使用自定义字体。除了选项卡标题,我还注意到工具栏上的问题。同样的情况:第一次打开后,字体应用正确。

res/values/font_certs.xmlres/font/font.xml 文件由 Android Studio 生成,与文档中提供的文件一样:

<font-family xmlns:app="http://schemas.android.com/apk/res-auto"
    app:fontProviderAuthority="com.google.android.gms.fonts"
    app:fontProviderCerts="@array/com_google_android_gms_fonts_certs"
    app:fontProviderPackage="com.google.android.gms"
    app:fontProviderQuery="Lato" />

这是清单:

<application ...>
    <meta-data
        android:name="preloaded_fonts"
        android:resource="@array/preloaded_fonts" />
</application>

res/values/arrays.xml

<resources>
    <array name="preloaded_fonts">
        <item>@font/lato</item>
        <item>@font/lato_bold</item>
        <item>@font/lato_light</item>
        <item>@font/raleway</item>
        <item>@font/raleway_semibold</item>
    </array>
</resources>

AppBarLayout 上使用以下主题应用字体:

<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" >
    <item name="android:fontFamily">@font/raleway</item>
    <item name="android:gravity">center_horizontal</item>
</style>

该项目使用以下版本:

minSdkVersion = 19
targetSdkVersion = 26
compileSdkVersion = 26
buildToolsVersion = '27.0.0'
playServicesVersion = '11.6.0'

使用带有 API 21 和真实 Nexus 6P 运行 API 27 的 AVD 重现了该问题。似乎字体缓存存在问题。我该如何解决或更好地调查此问题?

到目前为止,除了使用离线字体外,我还没有找到解决问题的方法。在这种情况下,我用从 Google 字体下载的 font.ttf 文件替换了 font.xml 文件,并删除了清单中的 preloaded_fonts 元标记。这导致 APK 大小增加了大约 200KB(对于 5 种字体)。