在我的活动中,我有一个自定义工具栏。我想改变它的标题字体。
以前,我可以通过将字体放在资产文件夹中来做到这一点。使用Android 3,我们现在可以使用fontFamily和FontsContract。我通过下面的代码尝试了这种方法:
mToolbar.setTitleTextAppearance(context,R.style.AppTheme_ActionBarText);和风格
<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加载字体的正确方法?我知道另一种方法是以编程方式加载字体,并使用侦听器在文本上设置字体。
**编辑:在第二个应用程序运行时,不会发生崩溃(因为字体已经下载)。出于测试目的,每次崩溃后我都会更改字体以进行调试.
发布于 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文件夹的所有可下载字体都加载到您的设备上,如果您有根设备,那么很容易删除并多次复制此问题。
发布于 2018-02-13 00:43:07
编辑:从支持库的27.1.0版本开始,问题似乎已经解决了。
这似乎是一个支持库问题。Google已经表示,修补程序应该在27.0.2版本之后才能使用,该版本目前尚未发布。
发布于 2017-10-29 21:23:02
根据文档,在使用支持库26时,您应该使用app命名空间:
当您通过支持库在XML布局中声明字体系列时,请使用app命名空间。
所以在你的代码中:
<item name="app:fontFamily">@font/ultra</item>https://stackoverflow.com/questions/47005310
复制相似问题