狀態列變白色,狀態列圖示變黑色。
前幾天下的簡書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 23Flag 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
FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
but not FLAG_TRANSLUCENT_STATUS
.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS
和FLAG_TRANSLUCENT_STATUS都是WindowManager.LayoutParams裡面的flag,第一個我沒有設定生效了,第二個與取的主題有關。我用的NoActionBar。第一個沒有設定不知道為什麼也生效了?