diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/library/MaterialFastScroll.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/library/MaterialFastScroll.kt index a1a3cb345c..786a6c9025 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/library/MaterialFastScroll.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/library/MaterialFastScroll.kt @@ -3,7 +3,9 @@ package eu.kanade.tachiyomi.ui.library import android.content.Context import android.util.AttributeSet import android.view.MotionEvent +import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView +import androidx.recyclerview.widget.StaggeredGridLayoutManager import eu.davidea.fastscroller.FastScroller import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.util.system.dpToPxEnd @@ -13,6 +15,7 @@ import kotlin.math.abs class MaterialFastScroll @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : FastScroller(context, attrs) { + var scrollOffset = 0 init { setViewsToUse( R.layout.material_fastscroll, R.id.fast_scroller_bubble, R.id.fast_scroller_handle @@ -35,6 +38,20 @@ class MaterialFastScroll @JvmOverloads constructor(context: Context, attrs: Attr } } + override fun setRecyclerViewPosition(y: Float) { + if (recyclerView != null) { + val targetPos = getTargetPos(y) + if (layoutManager is StaggeredGridLayoutManager) { + (layoutManager as StaggeredGridLayoutManager).scrollToPositionWithOffset( + targetPos, scrollOffset + ) + } else { + (layoutManager as LinearLayoutManager).scrollToPositionWithOffset(targetPos, scrollOffset) + } + updateBubbleText(targetPos) + } + } + private fun updateScrollListener() { onScrollListener = object : RecyclerView.OnScrollListener() { override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsAdapter.kt index b3c55d6c60..66757144c2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsAdapter.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsAdapter.kt @@ -71,7 +71,7 @@ class MangaDetailsAdapter( else R.string.volume_, volume ) } else { - recyclerView.context.getString(R.string.unknown) + getChapterName(chapter) } } MangaDetailsPresenter.TENS_OF_CHAPTERS -> recyclerView.context.getString( @@ -79,13 +79,17 @@ class MangaDetailsAdapter( chapter.chapter_number ) ) - else -> if (chapter.chapter_number > 0) { - recyclerView.context.getString( - R.string.chapter_, decimalFormat.format(chapter.chapter_number) - ) - } else { - chapter.name - } + else -> getChapterName(chapter) + } + } + + private fun getChapterName(item: ChapterItem): String { + return if (item.chapter_number > 0) { + recyclerView.context.getString( + R.string.chapter_, decimalFormat.format(item.chapter_number) + ) + } else { + item.name } } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsController.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsController.kt index 2a92a1c256..88e3cc92c5 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsController.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/MangaDetailsController.kt @@ -199,7 +199,10 @@ class MangaDetailsController : BaseController, setRecycler(view) setPaletteColor() - adapter?.fastScroller = fast_scroller2 + adapter?.fastScroller = fast_scroller + fast_scroller.addOnScrollStateChangeListener { + activity?.appbar?.y = 0f + } presenter.onCreate() swipe_refresh.isRefreshing = presenter.isLoading @@ -264,10 +267,11 @@ class MangaDetailsController : BaseController, swipe_refresh.setProgressViewOffset(false, (-40).dpToPx, headerHeight + offset) // 1dp extra to line up chapter header and manga header getHeader()?.setTopHeight(headerHeight) - fast_scroller2.updateLayoutParams { + fast_scroller.updateLayoutParams { topMargin = headerHeight bottomMargin = insets.systemWindowInsetBottom } + fast_scroller.scrollOffset = headerHeight } /** Set the toolbar to fully transparent or colored and translucent */ diff --git a/app/src/main/res/layout/manga_details_controller.xml b/app/src/main/res/layout/manga_details_controller.xml index 9ae2abb61e..25bbc47de3 100644 --- a/app/src/main/res/layout/manga_details_controller.xml +++ b/app/src/main/res/layout/manga_details_controller.xml @@ -29,7 +29,7 @@