可下载字体未正确缓存



我的应用程序通过Support Library 27.0.2使用 Android 可下载字体在 XML 上设置自定义字体,根据 Android 开发人员的 API 指南。除第一次在屏幕上绘制每个字体系列外,字体将正常应用。

例如:如果我打开ActivityA,它的Toolbar将显示带有默认 RobotoTab1标题,但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 的 AVD 和运行 API 27 的真实 Nexus 6P 重现了该问题。字体缓存似乎有问题。如何修复它或更好地调查此问题?

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

最新更新