在预览自定义视图时出现Android资源未找到异常

8

我有一个自定义视图,让我们称之为CustomView。在初始化中,我调用了以下方法:

textPaint.setTypeface(ResourcesCompat.getFont(getContext(),R.font.pretty_font));

在应用程序中,该视图运行良好并且字体显示正常,但问题是在编辑器中,该视图的预览不会加载,具体情况如下:
android.content.res.Resources$NotFoundException:找不到字体资源ID 0x7f090000。在androidx.core.content.res.ResourcesCompat.loadFont(ResourcesCompat.java:365)处发生错误。在以下位置初始化自定义视图:com.mycompany.myapp.view.views.CustomView.init(CustomView.java:490),com.mycompany.myapp.view.views.CustomView.initAttrs(CustomView.java:484),com.mycompany.myapp.view.views.CustomView。(CustomView.java:116)。此错误可能由于缺少字体文件或资源文件中的错误路径引起。请检查您的项目并确保字体资源可用。

为什么这个资源在编辑器中无法加载,但在应用程序中却没有问题呢? 提供信息,MinSdk = 21,TargetSdk = 28。

1个回答

9

在设计模式下,不要调用setTypeface。使用以下方法:

if (!isInEditMode()) {
textPaint.setTypeface(ResourcesCompat.getFont(getContext(),R.font.pretty_font))
}

在Android Studio预览版中,以编程方式设置自定义视图中的字体是否不支持? - brescia123
这并不是一个真正的答案。在编辑模式下如何避免崩溃? - Udi Oshi
你可以在这里查看: https://issuetracker.google.com/issues/36942641 但实际上在设计模式下你不需要关心字体,那不是很重要。 - user1209216

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接