diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookMenuBar.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookMenuBar.kt index 8781da182..746b18450 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookMenuBar.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookMenuBar.kt @@ -6,10 +6,8 @@ import androidx.compose.animation.AnimatedContent import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.SizeTransform import androidx.compose.animation.animateContentSize -import androidx.compose.animation.core.LinearOutSlowInEasing import androidx.compose.animation.core.animateDpAsState import androidx.compose.animation.core.animateFloatAsState -import androidx.compose.animation.core.tween import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.animation.slideInHorizontally @@ -73,6 +71,7 @@ import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.SideEffect import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableFloatStateOf import androidx.compose.runtime.mutableIntStateOf @@ -413,11 +412,13 @@ private fun ReadBookMenuSurface( } val isFloating = state.menuConfig.readMenuFloatingBottomBar val currentNavBarHeight = with(density) { WindowInsets.navigationBars.getBottom(this).toDp() } - var maxNavBarHeightValue by rememberSaveable { mutableFloatStateOf(0f) } - if (currentNavBarHeight.value > maxNavBarHeightValue) { - maxNavBarHeightValue = currentNavBarHeight.value + var lastValidNavBarHeightValue by rememberSaveable { mutableFloatStateOf(currentNavBarHeight.value) } + SideEffect { + if (currentNavBarHeight.value > 0f) { + lastValidNavBarHeightValue = currentNavBarHeight.value + } } - val navBarHeight = if (currentNavBarHeight.value > 0f) currentNavBarHeight else maxNavBarHeightValue.dp + val navBarHeight = if (currentNavBarHeight.value > 0f) currentNavBarHeight else lastValidNavBarHeightValue.dp val floatingHorizontalMargin = if (isFloating) 16.dp else 0.dp val floatingBottomMargin = if (isFloating) 16.dp + navBarHeight else 0.dp val mainHorizontalMargin =