diff --git a/app/src/main/kotlin/com/google/accompanist/systemuicontroller/SystemUiController.kt b/app/src/main/kotlin/com/google/accompanist/systemuicontroller/SystemUiController.kt index a737d4a60..31462b8fa 100644 --- a/app/src/main/kotlin/com/google/accompanist/systemuicontroller/SystemUiController.kt +++ b/app/src/main/kotlin/com/google/accompanist/systemuicontroller/SystemUiController.kt @@ -69,6 +69,11 @@ interface SystemUiController { isStatusBarVisible = value isNavigationBarVisible = value } + + /** + * Property which holds whether the status bar icons + content are 'dark' or not. + */ + var statusBarDarkContentEnabled: Boolean } /** @@ -149,4 +154,10 @@ internal class AndroidSystemUiController( windowInsetsController?.hide(WindowInsetsCompat.Type.navigationBars()) } } + + override var statusBarDarkContentEnabled: Boolean + get() = windowInsetsController?.isAppearanceLightStatusBars == true + set(value) { + windowInsetsController?.isAppearanceLightStatusBars = value + } } diff --git a/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/ReaderScreen.kt b/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/ReaderScreen.kt index 8a9f6b494..7eb7f89a9 100644 --- a/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/ReaderScreen.kt +++ b/app/src/main/kotlin/com/hippo/ehviewer/ui/reader/ReaderScreen.kt @@ -105,6 +105,18 @@ fun AnimatedVisibilityScope.ReaderScreen(args: ReaderScreenArgs, navigator: Dest } val bgColor by collectBackgroundColorAsState() val readingFailed = stringResource(R.string.error_reading_failed) + val uiController = rememberSystemUiController() + DisposableEffect(uiController) { + val lightStatusBar = uiController.statusBarDarkContentEnabled + onDispose { + uiController.statusBarDarkContentEnabled = lightStatusBar + } + } + LaunchedEffect(uiController) { + snapshotFlow { bgColor }.collect { + uiController.statusBarDarkContentEnabled = it == Color.White + } + } Await( { Either.catch {