1. 程式人生 > >標題欄的2個屬性,沉浸式相關

標題欄的2個屬性,沉浸式相關

<!--狀態列不覆蓋在ContentView上-->
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
<!--設定系統狀態列為透明-->
<item name="android:windowTranslucentStatus">true</item>

這裡寫圖片描述

//狀態列透明並覆蓋在ContentView上(4.4 以上的屬性)
<item name="android:windowTranslucentStatus">true</item
>

這裡寫圖片描述

<!--狀態列不覆蓋在ContentView上-->
<item name="android:windowDrawsSystemBarBackgrounds">false</item>
//設定狀態列顏色(5.0 以上的屬性)
<item name="android:statusBarColor">@android:color/transparent</item>

這裡寫圖片描述

小結:

<!--狀態列是否覆蓋在ContentView上-->
<item name="android:windowDrawsSystemBarBackgrounds"
>
true</item> <!--設定系統狀態列是否為透明--> <item name="android:windowTranslucentStatus">true</item> <!--設定系統狀態列顏色--> <item name="android:statusBarColor">@color/colorAccent</item>

其中:

佈局檔案中的這句程式碼

 android:fitsSystemWindows="true"

和style裡面的這句程式碼等價

<item name="android:windowDrawsSystemBarBackgrounds"
>true</item>

而且:

// 經測試在程式碼裡直接宣告透明狀態列更有效
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
   WindowManager.LayoutParams localLayoutParams = getWindow().getAttributes();
   localLayoutParams.flags = (WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | localLayoutParams.flags);//狀態列變透明
}

精彩推薦: