1. 程式人生 > >狀態列和導航欄的設定

狀態列和導航欄的設定

其中有些值是要相互配合使用,單一使用沒有效果,需要的時候查詢文件,都有解釋, 或是多嘗試幾次,也就知道該用哪個了。

// 沉浸式狀態列
        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); }