Android,工具栏和状态栏具有相同的颜色

时间:2016-03-25 08:21:39

标签: android toolbar statusbar android-collapsingtoolbarlayout

我设法使状态栏保持半透明状态,现在我正面临着它的颜色问题。出于某种原因,状态栏与向下滑动时的工具栏颜色相同。

enter image description here

DetailsActivity.xml:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/main_content"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true"
    android:background="@color/md_grey_200">

    <android.support.design.widget.AppBarLayout
        android:id="@+id/appbar"
        android:layout_width="match_parent"
        android:layout_height="260dp"
        android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
        android:fitsSystemWindows="true"
        app:layout_behavior="com.my.package.FlingBehavior">

        <android.support.design.widget.CollapsingToolbarLayout
            android:id="@+id/collapsing_toolbar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:fitsSystemWindows="true"
            app:contentScrim="?attr/colorPrimary"
            app:expandedTitleMarginEnd="64dp"
            app:expandedTitleMarginStart="48dp"
            app:layout_scrollFlags="scroll|exitUntilCollapsed"
            app:titleEnabled="true"

            <ImageView
                android:id="@+id/backdrop"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scaleType="centerCrop"
                app:layout_collapseMode="parallax" />

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="76dp"
                android:paddingTop="24dp"
                app:layout_collapseMode="pin"
                android:fitsSystemWindows="false"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />

        </android.support.design.widget.CollapsingToolbarLayout>

    </android.support.design.widget.AppBarLayout>

    <RecyclerView
        android:id="@+id/details_recyclerview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_margin="10dp"
        />

</android.support.design.widget.CoordinatorLayout>

styles-v21:

<style name="MyFinalTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- ...and here we setting appcompat’s color theme attrs -->
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/primary</item>
    <item name="android:statusBarColor">@color/primary_dark</item>
</style>

这是我用来使状态栏保持半透明的原因:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    Window w = getWindow(); 
    w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}

我尝试在styles-v21中将状态栏颜色更改为primary_dark,但它没有奏效。这两个都没有:

 w.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            w.setStatusBarColor(Color.BLUE);

colors.xml,根据要求:

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <color name="colorPrimary">#00b386</color>
   <color name="colorPrimaryDark">#008060</color>
   <color name="colorAccent">#00e6ac</color>
</resources>

我错过了什么?

5 个答案:

答案 0 :(得分:1)

问题解决了!

1。我删除了这些行:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    Window w = getWindow(); 
    w.setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS, WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
}

2. 我将android:fitsSystemWindows="true"添加到ImageView,如下所示:

<ImageView
    android:id="@+id/backdrop"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true" 
    android:scaleType="centerCrop"
    app:layout_collapseMode="parallax" />

3. 将statusBarColor更改为透明:

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

答案 1 :(得分:0)

更改此颜色,看看会发生什么

<item name="colorAccent">@color/primary</item>

<item name="colorAccent">@color/black</item> 

或者你可以使用如下的主题

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

答案 2 :(得分:0)

我认为您可以将它添加到style-21包中指定的Activity!

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

我看到你将其设置为CoordinatorLayout,这意味着此视图将显示为full_screen,因此当向上滑动时,statusBar将显示工具栏的背景,因为它是透明的。

android:fitsSystemWindows="true"
希望能帮到你。

答案 3 :(得分:0)

更改

<style name="MyFinalTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- ...and here we setting appcompat’s color theme attrs -->
    <item name="colorPrimary">@color/primary</item>
    <item name="colorPrimaryDark">@color/primary_dark</item>
    <item name="colorAccent">@color/primary</item>
    <item name="android:statusBarColor">@color/primary_dark</item>
</style>

<style name="MyFinalTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <!-- ...and here we setting appcompat’s color theme attrs -->
    <item name="android:colorPrimary">@color/primary</item>
    <item name="android:colorPrimaryDark">@color/primary_dark</item>
    <item name="android:colorAccent">@color/primary</item>
    <item name="android:statusBarColor">@color/primary_dark</item>
</style>

我希望这会有所帮助。

答案 4 :(得分:0)

我认为你对这个着色的东西有一些错误的概念。我想向你解释一下它的原理。

在colors.xml中,您通常可以在任何Android应用中使用3种颜色。他们是 -

<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="colorPrimary">#3F51B5</color>
<color name="colorPrimaryDark">#12AE90</color>
<color name="colorAccent">#FF4081</color>
</resources>
  • colorPrimaryDark

这是您活动中最顶级颜色的颜色,这是包含网络信息,时间和所有其他很酷的东西的栏。如果要更改其颜色,请更改color.xml中的相应颜色代码。

  • colorPrimary

这是标题栏的颜色,它包含您的应用名称或活动名称。如果您想更改其颜色,请更改color.xml中相应的颜色代码。

  • colorAccent

这是活动内部项目的颜色,如按钮和编辑文本等。如果要更改颜色,请更改color.xml中相应的颜色代码。

可以找到不同颜色的颜色代码here

我认为我的回答可以解决您的疑问。如果有,请告诉我。