在三星的android 11 12中仇祭,設(shè)置沉浸式狀態(tài)欄,雖然主屏沉入了狀態(tài)欄颈畸,但是狀態(tài)欄依然有個(gè)灰色蒙層蓋在上面乌奇。
解決方法如下:添加如下代碼。
//如果為全透明模式眯娱,取消設(shè)置Window半透明的Flag
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
附帶一個(gè)透明狀態(tài)欄工具方法
public static void translucentStatusBar(Activity activity, boolean isDarkStatusBarBlack) {
Window window = activity.getWindow();
//添加Flag把狀態(tài)欄設(shè)為可繪制模式
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
//如果為全透明模式礁苗,取消設(shè)置Window半透明的Flag
window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//設(shè)置狀態(tài)欄為透明
window.setStatusBarColor(Color.TRANSPARENT);
View decor = window.getDecorView();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
//設(shè)置window的狀態(tài)欄不可見,且狀態(tài)欄字體是白色
if (isDarkStatusBarBlack) {
decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR | View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
} else {
decor.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
}
}
else {
//初始化5.0以下,4.4以上沉浸式
// if (isDarkStatusBarBlack) {
// initBarBelowLOLLIPOP(activity);
// } else {
// window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
// }
}
//view不根據(jù)系統(tǒng)窗口來調(diào)整自己的布局
ViewGroup mContentView = window.findViewById(Window.ID_ANDROID_CONTENT);
View mChildView = mContentView.getChildAt(0);
if (mChildView != null) {
mChildView.setFitsSystemWindows(false);
ViewCompat.requestApplyInsets(mChildView);
}
}