android - DrawerLayout放在Toolbar的下方导致NavigationView出现与状态栏等高的遮罩层阴影
PHPz
PHPz 2017-04-17 17:50:20
[Android讨论组]

目标是想让Toolbar不被DrawerLayout的NavigationView遮盖,一直显示。
以下代码运行于Android Studio 2.1.2, 手机5.1.1

1.按照Android Studio 模板Navigation Drawer Activity创建的项目:






    

    








    

        

    

    

    



主题是android studio项目模板默认的

    
    
    

运行结果如下:

2.修改代码,使抽屉里的布局在Toolbar下面





    

        

    

    

    








    

    


主题不变,运行结果如下:

发现NavigationView的顶部有一与状态栏高度相等的遮罩层,请问怎样去掉这部分遮罩层的阴影。

  1. 试过,修改DrawerLayout和NavigationView的布局属性;以及从以下代码涉及到颜色的函数着手修改,都没有效果




  1. 修改activity_main_2.xml、content_main_2.xml中DrawerLayout 【注1】 和NavigationView【注2】的 android:fitsSystemWindows="false"由false改为true,就出现了以下结果:可以看到内容区也多了状态栏同等高度的遮罩层阴影

问题:请问,这个与状态栏等高的遮罩层阴影的来源是哪里,应该怎么去掉?谢谢!

PHPz
PHPz

学习是最好的投资!

全部回复(4)
巴扎黑

CoordinatorLayout里面套一个LinearLayout呢
把Toolbar和DrawerLayout放进去

黄舟

阴影来自于fitsystemWindows,这个属性算的上比较奇怪,对于NavgationView这个控件fitsSystemWindows这个属性进行了特殊的处理.官方理解 但是这个控件在不同的手机上有着不同的处理 类似的情况 。对于你这个方式 我的处理是在content_main2的根布局上添加一个layout_margin="?attr/ActionBarsize"这样的话就可以得到你想要的结果(所有的布局都是Android Studio中生成的)。

天蓬老师
//将主题的这两个属性修改下
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
<item name="android:statusBarColor">不透明的颜色</item>

有关fitsystemWindows属性

当android:windowDrawsSystemBarBackgrounds为true, android:statusBarColor为全透明时,
Activity里UI的高度包括状态栏,会嵌入到状态栏下。
fitsystemWindows这个属性时可以再ViewGroup中传递的,从父View向子View传递。

  1. 当Activity的父布局是CoordinatorLayout时,如果设置了fitsystemWindows=true,
    会在状态栏下(高度等于状态栏高度)绘制颜色块,颜色取决与CoordinatorLayout的systembarcolor属性,

systembarcolor默认颜色时colorPrimaryDark的颜色。

  1. CoordinatorLayout设置了fitsystemWindows=true,绘不绘制状态栏还取决与CoordinatorLayout的子View,如果子View也设置fitsystemWindows=true, 会先交给子View处理状态栏绘制。

可以google相关fitsystemWindows的文章

阿神

请问楼主,这个问题解决了吗?我遇到了同样的问题

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号