Android 如何让新的NavigationView与状态栏scrim配合使用?

Android 如何让新的NavigationView与状态栏scrim配合使用?,android,material-design,android-design-library,androiddesignsupport,Android,Material Design,Android Design Library,Androiddesignsupport,我一直在玩谷歌的新设计支持库,这是一个爆炸!我只是对导航视图有点困惑。我读到的所有东西都表明,NavigationView足够聪明,可以自己处理透明的scrim。(例如,这篇文章;搜索scrim)。无论如何,当我尝试这样做时,我得到了以下结果: 这是伟大的;正是我想要的。除了一件事。当抽屉关闭时,纸条是丑陋的深灰色,而不是我的原色黑色 以下是我的布局: <android.support.v4.widget.DrawerLayout xmlns:android="http://schem

我一直在玩谷歌的新设计支持库,这是一个爆炸!我只是对导航视图有点困惑。我读到的所有东西都表明,
NavigationView
足够聪明,可以自己处理透明的scrim。(例如,这篇文章;搜索scrim)。无论如何,当我尝试这样做时,我得到了以下结果:

这是伟大的;正是我想要的。除了一件事。当抽屉关闭时,纸条是丑陋的深灰色,而不是我的原色黑色

以下是我的布局:

<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true" >

<android.support.design.widget.CoordinatorLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fitsSystemWindows="true">

    <LinearLayout
        android:id="@+id/linear_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

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

        <fragment
            android:id="@+id/fragment"
            android:name="com.gmail.rixx.justin.envelopebudget.HomeFragment"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            tools:layout="@layout/fragment_home" />

    </LinearLayout>

    <android.support.design.widget.FloatingActionButton
        android:id="@+id/fab"
        android:layout_height="wrap_content"
        android:layout_width="wrap_content"
        android:layout_gravity="end|bottom"
        android:layout_margin="@dimen/fab_margin"
        app:backgroundTint="@color/accent"
        android:src="@drawable/ic_add_white_24dp" />

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

<android.support.design.widget.NavigationView
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:layout_gravity="start"
    app:headerLayout="@layout/drawer_header"
    app:menu="@menu/drawer" />

</android.support.v4.widget.DrawerLayout>
和v21/样式:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <style name="AppTheme" parent="AppTheme.Base">
        <item name="android:colorPrimary">@color/primary</item>
        <item name="android:colorPrimaryDark">@color/primary_dark</item>
        <item name="android:colorAccent">@color/accent</item>
        <item name="android:textColorPrimary">@color/primary_text</item>
        <item name="android:textColorSecondary">@color/secondary_text</item>

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

    </style>
</resources>

@颜色/原色
@颜色/原色/深色
@颜色/口音
@颜色/主文本
@颜色/辅助文本
真的
@android:彩色/透明
我模仿了Chris Banes的CheeseSquare应用程序,但我没有得到我想要的行为

我已尝试从v21/styles中删除
windowDrawsSystemBarBackgrounds
statusBarColor
,并获得了正确的颜色,但状态栏始终不透明:

我们将不胜感激。这是新东西,所以我知道我们都在学习

谢谢你的阅读


-Justin将此设置为您的
导航视图
android:fitsSystemWindows=“true”
这将确保导航将位于
状态栏的后面,并将
颜色重音添加到文件夹中的样式中。

经过几个小时的努力,并将我的代码与cheesesquare应用程序进行大量比较后,我发现如下内容:
DrawerLayout
必须具有属性
android:fitsystemwindows=“true”
,以及
NavigationView
,但
CoordinatorLayout
不应该。一旦我做了这些改变,它就成功了

谢谢大家,希望这对某些人有帮助

您可以查看我的布局代码


-Justin

在样式文件中尝试使用AppCompact主题作为父项

 <style name="AppTheme" parent="Base.Theme.AppCompat">


我希望它对您有所帮助。

您应该检查更新的SDK示例


实际上,他们在
活动
中使用
协调布局
,您希望在
状态栏
下绘制该布局,并且该布局具有不同的主题,因为如果您为没有根布局的其他活动放置透明的
状态栏
,它将显示白色的未着色
状态栏

将此设置为您的导航视图
android:fitsystemwindows=“false”

yesss!!!!谢谢,谢谢。我已经找了好几个小时了。支持和支持设计库的文档很难找到。我发现很多android的东西都没有很好的文档记录。我认为这可能有一个不必要的缺点:如果你以后想让你的一个片段进入沉浸式/全屏模式,那么它将受到以下事实的限制:活动级别的抽屉布局设置为自身大小,就好像状态栏和导航栏是可见的。这对我来说是可行的。谢谢你这个答案已经过时了,我建议你看看更新的抽屉示例。下载新的SDK示例,看看它是如何工作的。就我个人而言,我也不喜欢他们的解决方案,因为这看起来像一个黑客,但它比我目前的答案要好得多。谢谢你的建议。我会检查一下。我在牛轧糖上测试过,它在两种情况下运行良好:android:fitsystemwindows=“真/假”。但是在Kitkat上,它应该设置android:fitsystemwindows=“false”以使NavigationView与状态栏重叠
 <style name="AppTheme" parent="Base.Theme.AppCompat">