From f891e95f5ed2194abe4ceda68f1c17073c60519e Mon Sep 17 00:00:00 2001 From: fansan Date: Wed, 17 Jun 2026 23:22:55 +0800 Subject: [PATCH 1/4] =?UTF-8?q?fix=EF=BC=9A=E9=98=85=E8=AF=BB=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E5=88=87=E6=8D=A2=E6=B7=B1=E6=B5=85=E8=89=B2=EF=BC=8C?= =?UTF-8?q?=E5=BA=95=E9=83=A8=E8=8F=9C=E5=8D=95=E9=AB=98=E5=BA=A6=E6=8A=96?= =?UTF-8?q?=E5=8A=A8=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/ui/book/read/ReadBookMenuBar.kt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) 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 fe11ad156..8781da182 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 @@ -79,6 +79,7 @@ import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope +import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.runtime.snapshotFlow import androidx.compose.ui.Alignment @@ -411,7 +412,12 @@ private fun ReadBookMenuSurface( 560.dp } val isFloating = state.menuConfig.readMenuFloatingBottomBar - val navBarHeight = with(density) { WindowInsets.navigationBars.getBottom(this).toDp() } + val currentNavBarHeight = with(density) { WindowInsets.navigationBars.getBottom(this).toDp() } + var maxNavBarHeightValue by rememberSaveable { mutableFloatStateOf(0f) } + if (currentNavBarHeight.value > maxNavBarHeightValue) { + maxNavBarHeightValue = currentNavBarHeight.value + } + val navBarHeight = if (currentNavBarHeight.value > 0f) currentNavBarHeight else maxNavBarHeightValue.dp val floatingHorizontalMargin = if (isFloating) 16.dp else 0.dp val floatingBottomMargin = if (isFloating) 16.dp + navBarHeight else 0.dp val mainHorizontalMargin = From fab44fabea3cafe094374e4244746606a2ce3b33 Mon Sep 17 00:00:00 2001 From: fansan Date: Wed, 17 Jun 2026 23:56:45 +0800 Subject: [PATCH 2/4] =?UTF-8?q?fix=EF=BC=9Anav=E9=AB=98=E5=BA=A6=E8=8E=B7?= =?UTF-8?q?=E5=8F=96=E8=BE=B9=E7=95=8C=E9=97=AE=E9=A2=98=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/legado/app/ui/book/read/ReadBookMenuBar.kt | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) 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 = From ee7fbe305f18196a7d610aecd05d0e5dfe6f4817 Mon Sep 17 00:00:00 2001 From: fansan Date: Thu, 18 Jun 2026 00:07:58 +0800 Subject: [PATCH 3/4] =?UTF-8?q?fix=EF=BC=9Anav=E9=AB=98=E5=BA=A6=E8=BD=AC?= =?UTF-8?q?=E5=B1=8F=E8=BF=87=E6=9C=9F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/io/legado/app/ui/book/read/ReadBookMenuBar.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 746b18450..a0a26e6c6 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 @@ -101,6 +101,7 @@ import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.layout.layout import androidx.compose.ui.layout.onSizeChanged +import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalLayoutDirection @@ -411,8 +412,9 @@ private fun ReadBookMenuSurface( 560.dp } val isFloating = state.menuConfig.readMenuFloatingBottomBar + val orientation = LocalConfiguration.current.orientation val currentNavBarHeight = with(density) { WindowInsets.navigationBars.getBottom(this).toDp() } - var lastValidNavBarHeightValue by rememberSaveable { mutableFloatStateOf(currentNavBarHeight.value) } + var lastValidNavBarHeightValue by rememberSaveable(orientation) { mutableFloatStateOf(currentNavBarHeight.value) } SideEffect { if (currentNavBarHeight.value > 0f) { lastValidNavBarHeightValue = currentNavBarHeight.value From 8b743298ecb879a35744602b92564481ce63a7b1 Mon Sep 17 00:00:00 2001 From: fansan Date: Thu, 18 Jun 2026 00:24:39 +0800 Subject: [PATCH 4/4] =?UTF-8?q?fix=EF=BC=9A=E4=BB=A3=E7=A0=81=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/legado/app/ui/book/read/ReadBookMenuBar.kt | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) 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 a0a26e6c6..5e4cca400 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 @@ -71,7 +71,6 @@ 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 @@ -415,10 +414,8 @@ private fun ReadBookMenuSurface( val orientation = LocalConfiguration.current.orientation val currentNavBarHeight = with(density) { WindowInsets.navigationBars.getBottom(this).toDp() } var lastValidNavBarHeightValue by rememberSaveable(orientation) { mutableFloatStateOf(currentNavBarHeight.value) } - SideEffect { - if (currentNavBarHeight.value > 0f) { - lastValidNavBarHeightValue = 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