我将项目迁移到androidx,并使用了材料设计“入门指南”指南。但是,似乎无法正确渲染设计。 MainActivity显示以下输出:
java.lang.IllegalArgumentException:此组件上的样式 要求您的应用主题为Theme.AppCompat(或后代)。在 com.google.android.material.internal.ThemeEnforcement.checkTheme(ThemeEnforcement.java:240) 在 com.google.android.material.internal.ThemeEnforcement.checkAppCompatTheme(ThemeEnforcement.java:211) 在 com.google.android.material.internal.ThemeEnforcement.checkCompatibleTheme(ThemeEnforcement.java:146) 在 com.google.android.material.internal.ThemeEnforcement.obtainStyledAttributes(ThemeEnforcement.java:78) 在 com.google.android.material.internal.ScrimInsetsFrameLayout。(ScrimInsetsFrameLayout.java:58) 在 com.google.android.material.navigation.NavigationView。(NavigationView.java:115) 在 com.google.android.material.navigation.NavigationView。(NavigationView.java:111) 在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:401) 在 org.jetbrains.android.uipreview.ViewLoader.loadClass(ViewLoader.java:184) 在 org.jetbrains.android.uipreview.ViewLoader.loadView(ViewLoader.java:142) 在 com.android.tools.idea.rendering.LayoutlibCallbackImpl.loadView(LayoutlibCallbackImpl.java:229) 在 android.view.BridgeInflater.loadCustomView(BridgeInflater.java:421) 在 android.view.BridgeInflater.loadCustomView(BridgeInflater.java:432) 在 android.view.BridgeInflater.createViewFromTag(BridgeInflater.java:336) 在 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.inflate(LayoutInflater.java:515)处 android.view.LayoutInflater.inflate(LayoutInflater.java:394)位于 com.android.layoutlib.bridge.impl.RenderSessionImpl.inflate(RenderSessionImpl.java:327) 在com.android.layoutlib.bridge.Bridge.createSession(Bridge.java:386) 在 com.android.tools.idea.layoutlib.LayoutLibrary.createSession(LayoutLibrary.java:193) 在 com.android.tools.idea.rendering.RenderTask.createRenderSession(RenderTask.java:450) 在 com.android.tools.idea.rendering.RenderTask.lambda $ inflate $ 3(RenderTask.java:590) 在java.util.concurrent.FutureTask.run(FutureTask.java:266)在 java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511) 在java.util.concurrent.FutureTask.run(FutureTask.java:266)在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617) 在java.lang.Thread.run(Thread.java:745)
我可以将其部署在手机上,但设计预览仅显示白/蓝空白屏幕,并带有来自上方的错误消息。我使用的是SDK版本28,将styles.xml主题更改为“ materialcomponents”主题,但没有任何帮助。
我忘记了什么吗?我想知道它是什么组件,需要AppCompat-Theme,因为android studio自动将所有内容转换为androidx,而且我没有任何AppCompat引用。
<?xml version="1.0" encoding="utf-8"?>
<androidx.drawerlayout.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
tools:openDrawer="start">
<include
layout="@layout/app_bar_main"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<com.google.android.material.navigation.NavigationView
android:id="@+id/nav_view"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_gravity="start"
android:fitsSystemWindows="true"
app:headerLayout="@layout/nav_header_main"
app:menu="@menu/activity_main_drawer"/>
</androidx.drawerlayout.widget.DrawerLayout>