1. 程式人生 > >設定狀態列和標題欄的樣式

設定狀態列和標題欄的樣式

設定狀態列和標題欄的樣式

Android setSystemUiVisibility(visible)方法詳解

這個方法可以詳細的設定各種標題欄的狀態列的樣式.visible的值來決定

1.SYSTEM_ UI_ FLAG_ LOW_ PROFILE: 影藏不重要的狀態列圖示,導航欄中相應的圖示都變成了一個小點。點選狀態列或者標題欄還原成正常的狀態

2.SYSTEM_ UI_ FLAG_ HIDE_ NAVIGATION: 隱藏導航欄,點選螢幕的任意地方,導航欄出現

3.SYSTEM_ UI_ FLAG_ FULLSCREEN: 隱藏狀態列,從狀態列位置往下拉,狀態列重新出現

4.SYSTEM_ UI_ FLAG_ LAYOUT_ HIDE_ NAVIGATION:

將佈局擴充套件到導航欄和狀態列後面

5.SYSTEM_ UI_ FLAG_ LAYOUT_ FULLSCREEN:將佈局擴充套件到狀態列後面

6.SYSTEM_ UI_ FLAG_ LAYOUT_ STABLE:穩定佈局

7.SYSTEM_ UI_ FLAG_ IMMERSIVE:配合SYSTEM_ UI_ FLAG_ HIDE_ NAVIGATIONSYSTEM_ UI_ FLAG_ FULLSCREEN使用,使狀態列和導航欄真正的進入沉浸模式。點選螢幕任意區域,不會退出全屏模式,只有使用者上下拉狀態列或者導航欄時才會退出。

8.SYSTEM_ UI_ FLAG_ IMMERSIVE_ STICKY:

效果同SYSTEM_ UI_ FLAG_ IMMERSIVE,當用戶上下拉狀態列或者導航欄時,這些系統欄會以半透明的狀態顯示,並且在一段時間後消失。

我們可以使用上面的方法來設定標題欄和狀態列的顏色

沉浸式狀態列的程式碼實現

 if(Build.VERSION.SDK_INT> Build.VERSION_CODES.LOLLIPOP){
            Window window = getWindow();
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); //讓window來繪製狀態列和導航欄
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
            window.setNavigationBarColor(Color.TRANSPARENT);
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
            window.setStatusBarColor(Color.TRANSPARENT);
            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
        }

我們一般可以使用SYSTEM_ UI_ FLAG_ LAYOUT_ HIDE_ NAVIGATION: 這個flag值來將狀態列和導航欄與背景圖片完全融合在一起。

注: buide版本必須在sdk 21以上。