美文网首页
NavigationView 遮罩层阴影

NavigationView 遮罩层阴影

作者: 因为我的心 | 来源:发表于2023-05-25 18:16 被阅读0次

    一、前言:

    最近在做一个侧滑菜单的项目,使用NavigationView(导航视图)与DrawerLayout(抽屉布局)结合使用,实现了良好的侧滑交互体验,但是适配沉浸状态栏时遇到两个问题。网上很多教材,但是要么就是比较复杂,要么就是特殊案例,无法解决问题,这里总结一下遇到的坑。

    gitee地址点击:

    1、问题一:

    设置沉浸状态栏后,DrawerLayout就不要设置fitsSystemWindows=true,否在就成下面的样子:

    图片.png

    最好不要设置默认或者设置fitsSystemWindows=false,沉浸就正常了。如图:

    图片.png

    fitsSystemWindows属性说明

    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

    非刘海屏也适配:

    图片.png

    尝试了很多方法,这个是最简单的。insetForeground这个属性是ScrimInsetsFrameLayout自带的,表示插入区域的前景色。关于ScrimInsetsFrameLayout,自己还得去研究,就不做介绍啦。

    作者:Kevin丶CK
    链接:https://www.jianshu.com/p/c5d51d10b76a
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    相关文章

      网友评论

          本文标题:NavigationView 遮罩层阴影

          本文链接:https://www.haomeiwen.com/subject/lnmhedtx.html