diff --git a/app/src/main/java/org/mozilla/fenix/ThemeManager.kt b/app/src/main/java/org/mozilla/fenix/ThemeManager.kt index 252fa6c88..702abddfc 100644 --- a/app/src/main/java/org/mozilla/fenix/ThemeManager.kt +++ b/app/src/main/java/org/mozilla/fenix/ThemeManager.kt @@ -64,18 +64,10 @@ class DefaultThemeManager : ThemeManager { onHomeScreen: Boolean = true ) { window.statusBarColor = ContextCompat - .getColor(context, DefaultThemeManager - .resolveAttribute(android.R.attr.statusBarColor, context)) - - if (onHomeScreen) { - window.navigationBarColor = ContextCompat - .getColor(context, DefaultThemeManager - .resolveAttribute(R.attr.navigationBarColorHome, context)) - } else { - window.navigationBarColor = ContextCompat - .getColor(context, DefaultThemeManager - .resolveAttribute(R.attr.navigationBarColorBrowser, context)) - } + .getColor( + context, DefaultThemeManager + .resolveAttribute(android.R.attr.statusBarColor, context) + ) when (themeManager.currentTheme) { ThemeManager.Theme.Normal -> { @@ -87,18 +79,28 @@ class DefaultThemeManager : ThemeManager { window.decorView.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR or View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR + if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.O) { + // API level can display handle light navigation bar color + updateNavigationBar(onHomeScreen, window, context) + } } Configuration.UI_MODE_NIGHT_YES -> { window.decorView.systemUiVisibility = window.decorView.systemUiVisibility and View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.inv() and View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR.inv() + updateNavigationBar(onHomeScreen, window, context) } Configuration.UI_MODE_NIGHT_UNDEFINED -> { + // We assume light here per Android doc's recommendation window.decorView.systemUiVisibility = window.decorView.systemUiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR or View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR + if (android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.O) { + // API level can display handle light navigation bar color + updateNavigationBar(onHomeScreen, window, context) + } } } } @@ -106,8 +108,25 @@ class DefaultThemeManager : ThemeManager { window.decorView.systemUiVisibility = window.decorView.systemUiVisibility and View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.inv() and View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR.inv() + updateNavigationBar(onHomeScreen, window, context) } } } + + private fun updateNavigationBar(onHomeScreen: Boolean, window: Window, context: Context) { + if (onHomeScreen) { + window.navigationBarColor = ContextCompat + .getColor( + context, DefaultThemeManager + .resolveAttribute(R.attr.navigationBarColorHome, context) + ) + } else { + window.navigationBarColor = ContextCompat + .getColor( + context, DefaultThemeManager + .resolveAttribute(R.attr.navigationBarColorBrowser, context) + ) + } + } } } diff --git a/app/src/main/res/values-v23/styles.xml b/app/src/main/res/values-v23/styles.xml index a7600cd56..2391968ad 100644 --- a/app/src/main/res/values-v23/styles.xml +++ b/app/src/main/res/values-v23/styles.xml @@ -9,9 +9,6 @@ sure we also get them in 27+ --> @android:color/transparent @bool/theme_is_light - - - @android:color/transparent