Android: 状态栏不是过渡到新的主题 activity

Android: status bar not theme on transitiong to new activity

我创建了一个包含 2 个活动的简单应用程序。 Main(启动器)activity 主题正确,其中 colorPrimaryDark 应用于状态栏。 但是当我转换到新的 activity 时,除了状态栏之外,一切似乎都很正常。它不知何故变成了白色。知道为什么会这样吗?

运行 OnePlus One (Lollipop 5.0.2) 上的这个

目标 api -> 16+

values/styles.xml

<style name="AppTheme.Base" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="colorPrimary">@color/PrimaryColor</item>
    <item name="colorPrimaryDark">@color/PrimaryDarkColor</item>
    <item name="colorAccent">@color/accent</item>
    <item name="drawerArrowStyle">@style/DrawerArrowStyle</item>
</style>

values-v21/styles.xml

<style name="AppTheme" parent="AppTheme.Base">
    <item name="android:windowContentTransitions">true</item>
    <item name="android:windowAllowEnterTransitionOverlap">true</item>
    <item name="android:windowAllowReturnTransitionOverlap">true</item>
    <item name="android:windowSharedElementEnterTransition">@android:transition/slide_bottom</item>
    <item name="android:windowSharedElementExitTransition">@android:transition/move</item>
    <item name="android:windowDrawsSystemBarBackgrounds">true</item>
    <item name="android:statusBarColor">@android:color/transparent</item>
</style>

layout/activity_settings.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#856"
    android:fitsSystemWindows="true"
    android:orientation="vertical"
    tools:context=".SettingsActivity">

    <include layout="@layout/toolbar" />

</LinearLayout>

把api等级改成11+,就可以找到了。将主题更改为 DarkActionBar

改变

<item name="android:statusBarColor">@android:color/transparent</item>

<item name="android:statusBarColor">@color/PrimaryDarkColor</item>

你可能不再需要这个了,但我最近遇到了这个问题,所以也许这会对其他人有所帮助。

我通过在 values-v21/styles.xml 中创建新样式来修复它,从 AppTheme:

扩展
<style name="AppTheme.SolidStatusBar">
    <item name="android:statusBarColor">@color/PrimaryDarkColor</item>
</style>

并将其用作清单中的新 Activity 主题。这样您的更改就不必干扰需要使用半透明状态栏的活动,例如 Main activity.

虽然我不知道为什么会这样。

values-v21/styles.xml中,更改

<item name="android:statusBarColor">@android:color/transparent</item>

<item name="android:statusBarColor">@color/colorPrimaryDark</item>