状态栏正在将颜色更改为'windowBackground',而不是使用'colorPrimaryDark'

时间:2017-02-04 12:57:46

标签: android xamarin android-appcompat

我正在使用AppCompat设计我的Android移动应用程序。 它正在运行Android 6.0,即API 23。

这是我的AndroidManifest.xml:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="FeedingTime.FeedingTime" android:versionCode="1" android:versionName="1.0" android:installLocation="auto">
    <uses-sdk />
    <application android:icon="@drawable/Icon" android:label="Feeding Time" android:theme="@style/AppTheme">
    </application>
</manifest>

这是我的style.xml:

  <style name="AppTheme" parent="Theme.AppCompat.Light">
    <item name="android:windowTranslucentStatus">true</item>

    <item name="android:windowBackground">@color/background_color</item>

    <item name="colorPrimary">#6497b1</item>
    <item name="colorPrimaryDark">#005b96</item>
  </style>

以下是存在问题的Activity布局的XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">
  <include
        android:id="@+id/toolbarHistoryActivity"
        layout="@layout/toolbar" />
  <ListView
      android:minWidth="25px"
      android:minHeight="25px"
      android:layout_width="match_parent"
      android:layout_height="0dp"
      android:layout_weight="4"
      android:id="@+id/listViewHistory" />
  <Button
      android:text="Clear History"
      android:layout_width="match_parent"
      android:layout_height="0dp"
      android:layout_weight="1"
      android:id="@+id/btnClearHistory" />
</LinearLayout>

我遇到了问题,在主屏幕活动中,状态栏颜色按预期设置为深蓝色,但是当我打开第二个活动时,我的状态栏会改变颜色,它不再使用'colorPrimaryDark'而是我在'windowBackground'中使用的颜色较深的版本。

为什么?

1 个答案:

答案 0 :(得分:2)

以root身份添加Coordinatorlayout并使用android:fitsSystemWindows="true"

而不是Linearlayout

<android.support.design.widget.CoordinatorLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:fitsSystemWindows="true">

您还可以在StatusBar

中以Activity颜色进行编程
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
getWindow().setStatusBarColor(getResources().getColor(R.color.your_color));  //change color here
}