状态栏和导航栏的设置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/miao9999/article/details/84135029

其中有些值是要相互配合使用,单一使用没有效果,需要的时候查找文档,都有解释, 或是多尝试几次,也就知道该用哪个了。

// 沉浸式状态栏
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            //5.0以上使用原生方法
//            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
//                    | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION
//            );

            // 当 setStatusBarColor 设置为 TRANSPARENT(透明)时,
            // window.getDecorView().setSystemUiVisibility()
            // 设置 View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN (全屏)时,statusBar 会遮挡布局
            // 如果setStatusBarColor 设置为其他颜色时,设置全屏属性时也不会遮挡布局
//            window.setStatusBarColor(Color.TRANSPARENT);
//            window.setStatusBarColor(Color.GRAY);// 顶部状态栏的颜色

//            window.setNavigationBarColor(Color.BLUE);
//            window.setNavigationBarColor(Color.BLUE); // 底部状态栏的颜色,部分手机会有
            window.addFlags(
//                    WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
//                            WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION // 底部导航栏透明,设置该属性之后底部导航栏设置什么颜色都不起做用
//                    WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS // 顶端状态栏透明,设置该属性后,导航栏设置其他的颜色都不起作用
//                    WindowManager.LayoutParams.FLAG_FULLSCREEN // 全屏,不显示顶部状态栏,显示下面导航栏
                    WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
 
            );

            
            window.getDecorView().setSystemUiVisibility(
                    // 导航栏上的图标会变暗,有的不可见
//                    View.SYSTEM_UI_FLAG_LOW_PROFILE |
                    // 全屏 上面导航栏不显示
//                    View.SYSTEM_UI_FLAG_FULLSCREEN
                    // 上面会遮挡,下面不遮挡
//                  View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

                    // 与 View.SYSTEM_UI_FLAG_HIDE_NAVIGATION 一起使用,文档中说如果不设置该值,
                    // 系统使用其他值时会清除掉View.SYSTEM_UI_FLAG_HIDE_NAVIGATION这个值,但没看到效果
//                   View.SYSTEM_UI_FLAG_IMMERSIVE

                    // 与 View.SYSTEM_UI_FLAG_FULLSCREEN 一起使用时,上面的状态栏不显示,从屏幕顶部向下滑动时
                    // 状态栏会出现,一段时间后消息
                    // 与 SYSTEM_UI_FLAG_HIDE_NAVIGATION 一起使用时类似
                    // 在真机上部分会出现状态栏白色的情况
//                    View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY

                    // 布局会扩展到全屏,上下导航栏会遮挡布局
//                       View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    //自动隐藏下边导航栏,手动调出时,不会遮挡布
                    // View.SYSTEM_UI_FLAG_HIDE_NAVIGATION

                    // 不全屏,布局在状态栏下面
                     View.SYSTEM_UI_FLAG_LAYOUT_STABLE

                    // 状态栏文字显示深色
//                     View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR

            );

        } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            //4.4-5.0使用三方工具类,有些4.4的手机有问题,这里为演示方便,不使用沉浸式
//            getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//            SystemBarTintManager tintManager = new SystemBarTintManager(this);
//            tintManager.setStatusBarTintEnabled(true);
//            tintManager.setStatusBarTintColor(Color.TRANSPARENT);
        }

猜你喜欢

转载自blog.csdn.net/miao9999/article/details/84135029