提问人:Bitwise DEVS 提问时间:4/3/2022 更新时间:8/4/2022 访问量:2477
Android 12 初始屏幕 API 不适用于 Material 组件
Android 12 Splash Screen API not working with Material Component
问:
我一直在关注文档,但不幸的是,当使用 Material Component 作为应用程序整体主题时,它不包括改编。
<style name="Theme.App" parent="Theme.MaterialComponents.DayNight">
<!-- Primary brand color. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryVariant">@color/colorPrimaryDark</item>
<item name="colorOnPrimary">@android:color/white</item>
<!-- Secondary brand color. -->
<item name="colorSecondary">@color/colorPrimary</item> <!--Fab color-->
<item name="colorOnSecondary">@color/colorAccent</item> <!--Fab icon color-->
<item name="colorSecondaryVariant">@color/colorAccentDark</item>
<!-- Status bar color. -->
<item name="android:statusBarColor">?attr/colorPrimaryVariant</item>
<!-- Customize your theme here. -->
<!--<item name="tabStyle">@style/AppTabLayout</item>-->
<!-- The color for all other text including the menu -->
<item name="android:textColor">@color/colorPrimary</item>
<item name="android:textColorHighlight">@color/colorAccentDark</item>
<item name="android:windowAnimationStyle">@style/WindowAnimationTransition</item>
<item name="checkboxStyle">@style/AppCheckBoxStyle</item>
<item name="popupMenuBackground">@drawable/popup_bg_rounded</item>
<item name="materialAlertDialogTheme">@style/AppDialogTheme</item>
<item name="autoCompleteTextViewStyle">@style/AppCursor</item>
<item name="overlapAnchor">false</item>
<item name="android:dropDownVerticalOffset">?attr/actionBarSize</item>
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
</style>
<style name="Theme.App.Starting" parent="Theme.SplashScreen">
<item name="windowSplashScreenBackground">
@color/whitePrimaryDark
</item>
<item name="postSplashScreenTheme">
@style/Theme.Cryptonian.NoActionBar
</item>
</style>
Android 清单
<activity
android:name=".presentation.MainActivity"
android:exported="true"
android:screenOrientation="portrait"
android:theme="@style/Theme.App.Starting"
android:windowSoftInputMode="adjustPan">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
它崩溃并出现错误
Caused by: java.lang.IllegalArgumentException: The style on this component requires your app theme to be Theme.AppCompat (or a descendant).
有人遇到同样的问题吗?
答:
1赞
Solo4
8/4/2022
#1
您需要更改此项:
<item name="postSplashScreenTheme">@style/Theme.Cryptonian.NoActionBar</item>
对此:
<item name="postSplashScreenTheme">@style/Theme.App</item>
postSplashScreenTheme
需要获取您的应用主题。显示初始屏幕后,应用主题 WI
评论
0赞
Bitwise DEVS
8/4/2022
对不起,我已经解决了这个问题,这不是解决方案。无论如何,谢谢
0赞
rtsketo
10/10/2022
谢谢,我不知道我是怎么错过的,即使它在文档中。它可能不是 OP 的解决方案,但它确实是这个错误的解决方案。
6赞
Bitwise DEVS
8/4/2022
#2
解决方案是在调用 和super.onCreate()
setContentView
评论
0赞
userVadim
11/8/2023
就我而言,在 super.onCreate() 之前调用它不会显示启动画面。但是在 super.onCreate() 之后和其他任何内容之前立即调用它都可以正常工作
评论
installSplashScreen()