1. 程式人生 > >狀態列變白色,狀態列圖示變黑色。

狀態列變白色,狀態列圖示變黑色。

     前幾天下的簡書app,昨天玩手機發現它的狀態列是白色的,圖示是黑色。用nexus6p和榮耀6試了下都是可以的。

     今天來查資料發現,M版以上是支援狀態列圖示變色的。m版新增Flag:SYSTEM_UI_FLAG_LIGHT_STATUS_BAR

     程式碼:

      public void setDarkStatusIcon(boolean bDark) {
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
            View decorView = getWindow().getDecorView();
            getWindow().setStatusBarColor(getResources().getColor(android.R.color.white));//這裡對應的是狀態列的顏色,就是style中colorPrimaryDark的顏色
            if(decorView != null){
                int vis = decorView.getSystemUiVisibility();
                if(bDark){
                    vis |= View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
                } else{
                    vis &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR;
                }
                decorView.setSystemUiVisibility(vis);
            }
        }
    }

public static final int SYSTEM_UI_FLAG_LIGHT_STATUS_BAR

Added in API level 23

Flag for setSystemUiVisibility(int): Requests the status bar to draw in a mode that is compatible with light status bar backgrounds.

For this to take effect, the window must request FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS but not FLAG_TRANSLUCENT_STATUS

.

See Also
  • windowLightStatusBar
Constant Value: 8192 (0x00002000)//For this to take effect, the window must request FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS but not FLAG_TRANSLUCENT_STATUS.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS 和FLAG_TRANSLUCENT_STATUS都是WindowManager.LayoutParams裡面的flag,第一個我沒有設定生效了,第二個與取的主題有關。我用的NoActionBar。第一個沒有設定不知道為什麼也生效了?