我有一个自定义视图,我们称之为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) 在 androidx.core.content.res.ResourcesCompat.getFont(ResourcesCompat.java:230) 在 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) 在sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 方法) sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在java.lang.reflect.Constructor.newInstance(Constructor.java:423) 在 org.jetbrains.android.uipreview.ViewLoader.createNewInstance(ViewLoader.java:403) 在 org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:186) 在 org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:144) 在 com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadView(LayoutlibCallbackImpl.java:309) 在 android.view.BridgeInflater.loadCustomView(BridgeInflater.java:418) 在 android.view.BridgeInflater.loadCustomView(BridgeInflater.java:429) 在 android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:333) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) 在 android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:863) 在 android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72) 在android.view.LayoutInflater.rInflate(LayoutInflater.java:837)处 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) 在 android.view.LayoutInflater.rInflate_Original(LayoutInflater.java:866) 在 android.view.LayoutInflater_Delegate.rInflate(LayoutInflater_Delegate.java:72) 在android.view.LayoutInflater.rInflate(LayoutInflater.java:837)处 android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) 在android.view.LayoutInflater.inflate(LayoutInflater.java:515)处 android.view.LayoutInflater.inflate(LayoutInflater.java:394)位于 com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:323) 在com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:394) 在 com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:200) 在 com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:572) 在 com.android.tools.idea.rendering.RenderTask.lambda $ inflate $ 5(RenderTask.java:698) 在 java.util.concurrent.CompletableFuture $ AsyncSupply.run(CompletableFuture.java:1590) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:624) 在java.lang.Thread.run(Thread.java:748)
为什么不会在编辑器中加载此资源,但是在应用程序中运行该资源没有问题? 仅供参考,MinSdk = 21,TargetSdk = 28
答案 0 :(得分:3)
请勿在设计模式下调用npm run build:watch
。使用:
setTypeface