From 3fb7bc55ec547e1037fe8c8524871d60db656e8b Mon Sep 17 00:00:00 2001 From: HapeLee <63206378+HapeLee@users.noreply.github.com> Date: Tue, 16 Jun 2026 22:28:55 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=97=8B=E8=BD=AC?= =?UTF-8?q?=E5=B1=8F=E5=B9=95=E5=90=8E=E6=A8=AA=E5=B1=8F=E5=8F=8C=E9=A1=B5?= =?UTF-8?q?=E6=A8=A1=E5=BC=8F=E4=B8=8D=E7=94=9F=E6=95=88=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 根因:旋转后 onSizeChanged 触发 ChapterProvider.upLayout() 正确设置了 doublePage, 但随后的 ReloadContent 因 isInitFinish=false 被跳过。 initData() 设置 isInitFinish=true 后,因为是同一本书 (isSameBook=true), 不会调用 loadContent(),导致内容未用新布局重新加载。 修复:在 initBook() 完成后,如果是同一本书,发送 UpdateLayout + ReloadContent 效果, 确保内容用旋转后的 ChapterProvider 尺寸重新布局。 Fixes #1461 #1397 --- .../java/io/legado/app/ui/book/read/ReadBookViewModel.kt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt index 52a0e86fa..8b408e8d3 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookViewModel.kt @@ -1799,6 +1799,15 @@ class ReadBookViewModel( ReadBook.resetData(book) } _uiState.update { it.copy(isInitFinish = true) } + // 旋转后 ChapterProvider 的 doublePage/visibleWidth 已在 onSizeChanged 中更新, + // 但 ReloadContent 因 isInitFinish=false 被跳过。此处确保内容用新布局重新加载。 + if (isSameBook) { + _effects.tryEmit( + ReadBookEffect.UpdateReadViewConfig( + setOf(ConfigUpdateAction.UpdateLayout, ConfigUpdateAction.ReloadContent) + ) + ) + } if (!book.isLocal && book.tocUrl.isEmpty() && !loadBookInfo(book)) { return }