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">