private static void SetStatusBarIsLight(Window currentWindow, bool isLight) { if ((int)Build.VERSION.SdkInt < 30) { #pragma warning disable CS0618 // Type or member is obsolete. Using new API for Sdk 30+ currentWindow.DecorView.SystemUiVisibility = isLight ? (StatusBarVisibility)(SystemUiFlags.LightStatusBar | SystemUiFlags.LightNavigationBar) : 0; #pragma warning restore CS0618 // Type or member is obsolete } else { WindowInsetsControllerAppearance lightStatusBars = isLight ? WindowInsetsControllerAppearance.LightStatusBars | WindowInsetsControllerAppearance.LightNavigationBars : 0; currentWindow.InsetsController?.SetSystemBarsAppearance((int)lightStatusBars, (int)lightStatusBars); } }
private static void SetBarAppearance(Window currentWindow, bool?statusBarLight = null, bool?navigationBarLight = null) { StatusBarVisibility barAppearanceOld = 0; WindowInsetsControllerAppearance barAppearanceNew = 0; if ((int)Build.VERSION.SdkInt < 30) { #pragma warning disable CS0618 // Type or member is obsolete. Using new API for Sdk 30+ barAppearanceOld = currentWindow.DecorView.SystemUiVisibility; #pragma warning restore CS0618 // Type or member is obsolete } else { barAppearanceNew = (WindowInsetsControllerAppearance)currentWindow.InsetsController.SystemBarsAppearance; } if (statusBarLight == true) { barAppearanceOld = barAppearanceOld.AddFlag((StatusBarVisibility)SystemUiFlags.LightStatusBar); barAppearanceNew = barAppearanceNew.AddFlag(WindowInsetsControllerAppearance.LightStatusBars); } else if (statusBarLight == false) { barAppearanceOld = barAppearanceOld.RemoveFlag((StatusBarVisibility)SystemUiFlags.LightStatusBar); barAppearanceNew = barAppearanceNew.RemoveFlag(WindowInsetsControllerAppearance.LightStatusBars); } if (navigationBarLight == true) { barAppearanceOld = barAppearanceOld.AddFlag((StatusBarVisibility)SystemUiFlags.LightNavigationBar); barAppearanceNew = barAppearanceNew.AddFlag(WindowInsetsControllerAppearance.LightNavigationBars); } else if (navigationBarLight == false) { barAppearanceOld = barAppearanceOld.RemoveFlag((StatusBarVisibility)SystemUiFlags.LightNavigationBar); barAppearanceNew = barAppearanceNew.RemoveFlag(WindowInsetsControllerAppearance.LightNavigationBars); } if ((int)Build.VERSION.SdkInt < 30) { #pragma warning disable CS0618 // Type or member is obsolete. Using new API for Sdk 30+ currentWindow.DecorView.SystemUiVisibility = barAppearanceOld; #pragma warning restore CS0618 // Type or member is obsolete } else { currentWindow.InsetsController?.SetSystemBarsAppearance((int)barAppearanceNew, (int)barAppearanceNew); } }