標題欄的2個屬性,沉浸式相關
阿新 • • 發佈:2019-01-27
<!--狀態列不覆蓋在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);//狀態列變透明
}