首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为工具栏使用自定义字体时崩溃

为工具栏使用自定义字体时崩溃
EN

Stack Overflow用户
提问于 2017-10-29 21:15:04
回答 4查看 1.8K关注 0票数 12

在我的活动中,我有一个自定义工具栏。我想改变它的标题字体。

以前,我可以通过将字体放在资产文件夹中来做到这一点。使用Android 3,我们现在可以使用fontFamily和FontsContract。我通过下面的代码尝试了这种方法:

代码语言:javascript
复制
mToolbar.setTitleTextAppearance(context,R.style.AppTheme_ActionBarText);

和风格

代码语言:javascript
复制
<style name="AppTheme.ActionBarText" parent="@android:style/Widget.ActionBar.TabText">
            <item name="fontFamily">@font/ultra</item>
        </style>

当我运行该应用程序时,几秒钟后(下载自定义字体所需的时间),该应用程序将崩溃,下面的日志如下:

android.support.v4.provider.FontsContractCompat$TypefaceResult.mResult‘:尝试在android.support.v4.provider.FontsContractCompat$2.onReply(FontsContractCompat.java:277) at android.support.v4.provider.FontsContractCompat$2.onReply(FontsContractCompat.java:274) at android.support.v4.provider.FontsContractCompat$3.onReply(FontsContractCompat的空对象引用上从字段'int android.support.v4.provider.FontsContractCompat$3.onReply(FontsContractCompat中读取android.support.v4.provider.FontsContractCompat$3.onReply(FontsContractCompat.java:300) at android.support.v4.provider.SelfDestructiveThread$2$1.run(SelfDestructiveThread.java:149) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95)在android.app.ActivityThread.main(ActivityThread.java:7225) at java.lang.reflect.Method.invoke(原生方法)在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

这是一个bug,还是有一种通过xml加载字体的正确方法?我知道另一种方法是以编程方式加载字体,并使用侦听器在文本上设置字体。

**编辑:在第二个应用程序运行时,不会发生崩溃(因为字体已经下载)。出于测试目的,每次崩溃后我都会更改字体以进行调试.

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-12-15 17:34:41

当用户试图用可下载的字体启动应用程序时,如果设备上没有互联网,并且以前没有下载这些字体,问题就会发生。然后应用程序将启动,但是崩溃只会在5-10秒之后发生.我想当http超时发生的时候。

因此,我没有解决方案,因此使用xml-字体而不是可下载字体的,请参阅https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html

FYI:加载到/data/data/com.google.android.gms/files/fonts文件夹的所有可下载字体都加载到您的设备上,如果您有根设备,那么很容易删除并多次复制此问题。

票数 5
EN

Stack Overflow用户

发布于 2018-02-13 00:43:07

编辑:从支持库的27.1.0版本开始,问题似乎已经解决了。

这似乎是一个支持库问题。Google已经表示,修补程序应该在27.0.2版本之后才能使用,该版本目前尚未发布。

https://issuetracker.google.com/issues/69085400

票数 4
EN

Stack Overflow用户

发布于 2017-10-29 21:23:02

根据文档,在使用支持库26时,您应该使用app命名空间:

当您通过支持库在XML布局中声明字体系列时,请使用app命名空间。

所以在你的代码中:

代码语言:javascript
复制
    <item name="app:fontFamily">@font/ultra</item>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47005310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档