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>
我创建了一个包含 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>