Merge pull request #1480 from fansangg/fix/read-nav-height

fix:阅读界面切换深浅色,底部菜单高度抖动的问题
This commit is contained in:
Kudomaga
2026-06-18 00:41:09 +08:00
committed by GitHub
@@ -6,10 +6,8 @@ import androidx.compose.animation.AnimatedContent
import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.AnimatedVisibility
import androidx.compose.animation.SizeTransform import androidx.compose.animation.SizeTransform
import androidx.compose.animation.animateContentSize import androidx.compose.animation.animateContentSize
import androidx.compose.animation.core.LinearOutSlowInEasing
import androidx.compose.animation.core.animateDpAsState import androidx.compose.animation.core.animateDpAsState
import androidx.compose.animation.core.animateFloatAsState import androidx.compose.animation.core.animateFloatAsState
import androidx.compose.animation.core.tween
import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeIn
import androidx.compose.animation.fadeOut import androidx.compose.animation.fadeOut
import androidx.compose.animation.slideInHorizontally import androidx.compose.animation.slideInHorizontally
@@ -79,6 +77,7 @@ import androidx.compose.runtime.mutableIntStateOf
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue import androidx.compose.runtime.setValue
import androidx.compose.runtime.snapshotFlow import androidx.compose.runtime.snapshotFlow
import androidx.compose.ui.Alignment import androidx.compose.ui.Alignment
@@ -101,6 +100,7 @@ import androidx.compose.ui.input.pointer.pointerInput
import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.layout.layout import androidx.compose.ui.layout.layout
import androidx.compose.ui.layout.onSizeChanged import androidx.compose.ui.layout.onSizeChanged
import androidx.compose.ui.platform.LocalConfiguration
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalDensity
import androidx.compose.ui.platform.LocalLayoutDirection import androidx.compose.ui.platform.LocalLayoutDirection
@@ -411,7 +411,13 @@ private fun ReadBookMenuSurface(
560.dp 560.dp
} }
val isFloating = state.menuConfig.readMenuFloatingBottomBar val isFloating = state.menuConfig.readMenuFloatingBottomBar
val navBarHeight = with(density) { WindowInsets.navigationBars.getBottom(this).toDp() } val orientation = LocalConfiguration.current.orientation
val currentNavBarHeight = with(density) { WindowInsets.navigationBars.getBottom(this).toDp() }
var lastValidNavBarHeightValue by rememberSaveable(orientation) { mutableFloatStateOf(currentNavBarHeight.value) }
if (currentNavBarHeight.value > 0f && lastValidNavBarHeightValue != currentNavBarHeight.value) {
lastValidNavBarHeightValue = currentNavBarHeight.value
}
val navBarHeight = if (currentNavBarHeight.value > 0f) currentNavBarHeight else lastValidNavBarHeightValue.dp
val floatingHorizontalMargin = if (isFloating) 16.dp else 0.dp val floatingHorizontalMargin = if (isFloating) 16.dp else 0.dp
val floatingBottomMargin = if (isFloating) 16.dp + navBarHeight else 0.dp val floatingBottomMargin = if (isFloating) 16.dp + navBarHeight else 0.dp
val mainHorizontalMargin = val mainHorizontalMargin =