diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt index aaa568ee2..784dcc62f 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt @@ -607,7 +607,10 @@ class ReadBookActivity : BaseReadBookActivity(), R.id.menu_download -> showDownloadDialog() R.id.menu_add_bookmark -> addBookmark() R.id.menu_simulated_reading -> showSimulatedReading() - R.id.menu_edit_content -> showDialogFragment(ContentEditDialog()) + R.id.menu_edit_content -> { + binding.readMenu.runMenuOut() + showDialogFragment(ContentEditDialog()) + } R.id.menu_update_toc -> ReadBook.book?.let { if (it.isEpub) { BookHelp.clearCache(it) @@ -618,8 +621,10 @@ class ReadBookActivity : BaseReadBookActivity(), } loadChapterList(it) } - - R.id.menu_enable_replace -> changeReplaceRuleState() + R.id.menu_enable_replace -> { + binding.readMenu.runMenuOut() + changeReplaceRuleState() + } R.id.menu_re_segment -> ReadBook.book?.let { it.setReSegment(!it.getReSegment()) item.isChecked = it.getReSegment() diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadMenu.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadMenu.kt index 640b15652..94dc141e7 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadMenu.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadMenu.kt @@ -813,44 +813,48 @@ class ReadMenu @JvmOverloads constructor( } - fun upSeekBar() { - //孩子们 土方法丑陋但有效 - binding.seekReadPage.apply { - when (AppConfig.progressBarBehavior) { - "page" -> { - ReadBook.curTextChapter?.let { chapter -> - if (chapter.pageSize >= 0 && ReadBook.durPageIndex >= 0) { - valueFrom = 1f - valueTo = chapter.pageSize.toFloat().coerceAtLeast(2f) - stepSize = 1f - value = (ReadBook.durPageIndex).coerceIn(1, chapter.pageSize).toFloat() - } else { - valueFrom = 0f - valueTo = 100000f - stepSize = 0f - value = 0f - } + fun upSeekBar() = binding.seekReadPage.apply { + + fun safeSet(rangeFrom: Float, rangeTo: Float, step: Float, rawValue: Float) { + valueFrom = rangeFrom + valueTo = rangeTo + stepSize = step + val safeValue = rawValue.coerceIn(rangeFrom, rangeTo) + if (value != safeValue) value = safeValue + } + + when (AppConfig.progressBarBehavior) { + "page" -> { + ReadBook.curTextChapter?.let { chapter -> + if (chapter.pageSize > 0 && ReadBook.durPageIndex >= 0) { + safeSet( + rangeFrom = 1f, + rangeTo = chapter.pageSize.toFloat().coerceAtLeast(2f), + step = 1f, + rawValue = ReadBook.durPageIndex.toFloat() + ) + } else { + safeSet(0f, 100000f, 0f, 0f) } } + } - "chapter" -> { - if (ReadBook.simulatedChapterSize > 0) - { - valueFrom = 1f - valueTo = ReadBook.simulatedChapterSize.toFloat().coerceAtLeast(2f) - stepSize = 1f - value = (ReadBook.durChapterIndex).coerceIn(1, ReadBook.simulatedChapterSize).toFloat() - } else { - valueFrom = 0f - valueTo = 100000f - stepSize = 0f - value = 0f - } + "chapter" -> { + if (ReadBook.simulatedChapterSize > 0) { + safeSet( + rangeFrom = 1f, + rangeTo = ReadBook.simulatedChapterSize.toFloat().coerceAtLeast(2f), + step = 1f, + rawValue = ReadBook.durChapterIndex.toFloat() + ) + } else { + safeSet(0f, 100000f, 0f, 0f) } } } } + // fun upSeekBar() { // binding.seekReadPage.apply { // when (AppConfig.progressBarBehavior) {