diff --git a/lib/android/app/src/main/java/com/reactnativenavigation/presentation/Presenter.java b/lib/android/app/src/main/java/com/reactnativenavigation/presentation/Presenter.java index 233e86e7cdf..e9e3876fbf7 100644 --- a/lib/android/app/src/main/java/com/reactnativenavigation/presentation/Presenter.java +++ b/lib/android/app/src/main/java/com/reactnativenavigation/presentation/Presenter.java @@ -97,7 +97,7 @@ private void setTranslucent(StatusBarOptions options) { Window window = activity.getWindow(); if (options.translucent.isTrue()) { window.setFlags(FLAG_TRANSLUCENT_STATUS, FLAG_TRANSLUCENT_STATUS); - } else { + } else if (StatusBarUtils.isTranslucent(window)) { window.clearFlags(FLAG_TRANSLUCENT_STATUS); } } @@ -132,7 +132,7 @@ private void setTextColorScheme(TextColorScheme scheme) { } } - private static void clearDarkTextColorScheme(View view) { + private void clearDarkTextColorScheme(View view) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) return; int flags = view.getSystemUiVisibility(); flags &= ~View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR; @@ -168,7 +168,7 @@ private void mergeTranslucent(StatusBarOptions options) { Window window = activity.getWindow(); if (options.translucent.isTrue()) { window.setFlags(FLAG_TRANSLUCENT_STATUS, FLAG_TRANSLUCENT_STATUS); - } else if (options.translucent.isFalse()) { + } else if (options.translucent.isFalse() && StatusBarUtils.isTranslucent(window)) { window.clearFlags(FLAG_TRANSLUCENT_STATUS); } } diff --git a/lib/android/app/src/main/java/com/reactnativenavigation/utils/StatusBarUtils.java b/lib/android/app/src/main/java/com/reactnativenavigation/utils/StatusBarUtils.java index 0bc987854da..3ff45e6c7b0 100644 --- a/lib/android/app/src/main/java/com/reactnativenavigation/utils/StatusBarUtils.java +++ b/lib/android/app/src/main/java/com/reactnativenavigation/utils/StatusBarUtils.java @@ -3,7 +3,10 @@ import android.content.Context; import android.content.res.Resources; import android.os.Build; +import android.view.Window; +import android.view.WindowManager; +import static android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS; import static com.reactnativenavigation.utils.UiUtils.dpToPx; public class StatusBarUtils { @@ -27,4 +30,8 @@ public static int getStatusBarHeight(Context context) { return statusBarHeight; } + public static boolean isTranslucent(Window window) { + WindowManager.LayoutParams lp = window.getAttributes(); + return (lp.flags & FLAG_TRANSLUCENT_STATUS) == FLAG_TRANSLUCENT_STATUS; + } }