一、前言:
最近在做一个侧滑菜单的项目,使用NavigationView(导航视图)与DrawerLayout(抽屉布局)结合使用,实现了良好的侧滑交互体验,但是适配沉浸状态栏时遇到两个问题。网上很多教材,但是要么就是比较复杂,要么就是特殊案例,无法解决问题,这里总结一下遇到的坑。
1、问题一:
设置沉浸状态栏后,DrawerLayout就不要设置fitsSystemWindows=true,否在就成下面的样子:
图片.png最好不要设置默认或者设置fitsSystemWindows=false,沉浸就正常了。如图:
图片.pngfitsSystemWindows属性说明
fitsSystemWindows
属性可以让view根据系统窗口来调整自己的布局;简单点说就是我们在设置应用布局时是否考虑系统窗口布局,这里系统窗口包括系统状态栏、导航栏、输入法等,包括一些手机系统带有的底部虚拟按键。
android:fitsSystemWindows=”true”
(触发View的padding属性来给系统窗口留出空间)
这个属性可以给任何view设置,只要设置了这个属性此view的其他所有padding属性失效,同时该属性的生效条件是只有在设置了透明状态栏(StatusBar)或者导航栏(NavigationBar)此属性才会生效。
注意:
fitsSystemWindows只作用在Android4.4及以上的系统,因为4.4以下的系统StatusBar没有透明状态。
具体可以参考这篇文章:https://blog.csdn.net/baidu_32472003/article/details/79925766
2、问题二:
设置沉浸式,在NavigationView 显示的时候顶部有遮罩层阴影,无法做到完美,如图:
图片.png看到各种写法,也尝试了很多,最后在https://bbs.csdn.net/topics/391920463有人在论坛里提问才知道的,
NavigationView设置一行属性即刻:
结束,看个效果:
图片.png非刘海屏也适配:
图片.png尝试了很多方法,这个是最简单的。insetForeground这个属性是ScrimInsetsFrameLayout自带的,表示插入区域的前景色。关于ScrimInsetsFrameLayout,自己还得去研究,就不做介绍啦。
作者:Kevin丶CK
链接:https://www.jianshu.com/p/c5d51d10b76a
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
网友评论