diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/thumbnails/PagesThumbnailsSheet.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/thumbnails/PagesThumbnailsSheet.kt index 06083d02e..69e5c275d 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/thumbnails/PagesThumbnailsSheet.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/thumbnails/PagesThumbnailsSheet.kt @@ -6,6 +6,7 @@ import android.view.View import android.view.ViewGroup import androidx.core.view.isVisible import androidx.fragment.app.FragmentManager +import androidx.recyclerview.widget.RecyclerView import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.android.material.bottomsheet.BottomSheetDialog import org.koin.android.ext.android.get @@ -53,6 +54,15 @@ class PagesThumbnailsSheet : BaseBottomSheet(), override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + + val title = arguments?.getString(ARG_TITLE) + binding.toolbar.title = title + binding.toolbar.setNavigationOnClickListener { dismiss() } + binding.toolbar.subtitle = + resources.getQuantityString(R.plurals.pages, thumbnails.size, thumbnails.size) + + val initialTopPosition = binding.recyclerView.top + with(binding.recyclerView) { addItemDecoration( SpacingItemDecoration(view.resources.getDimensionPixelOffset(R.dimen.grid_spacing)) @@ -64,42 +74,27 @@ class PagesThumbnailsSheet : BaseBottomSheet(), get(), this@PagesThumbnailsSheet ) + addOnScrollListener(object : RecyclerView.OnScrollListener() { + override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) = Unit + + override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { + super.onScrolled(recyclerView, dx, dy) + binding.appbar.isLifted = getChildAt(0).top < initialTopPosition + } + }) addOnLayoutChangeListener(spanResolver) spanResolver.setGridSize(get().gridSize / 100f, this) } - - val title = arguments?.getString(ARG_TITLE) - binding.toolbar.title = title - binding.toolbar.setNavigationOnClickListener { dismiss() } - binding.toolbar.subtitle = - resources.getQuantityString(R.plurals.pages, thumbnails.size, thumbnails.size) - binding.textViewTitle.text = title - if (dialog !is BottomSheetDialog) { - binding.toolbar.isVisible = true - binding.textViewTitle.isVisible = false - binding.appbar.elevation = resources.getDimension(R.dimen.elevation_large) - } } override fun onCreateDialog(savedInstanceState: Bundle?) = super.onCreateDialog(savedInstanceState).also { val behavior = (it as? BottomSheetDialog)?.behavior ?: return@also behavior.addBottomSheetCallback(object : BottomSheetBehavior.BottomSheetCallback() { - private val elevation = resources.getDimension(R.dimen.elevation_large) override fun onSlide(bottomSheet: View, slideOffset: Float) = Unit - override fun onStateChanged(bottomSheet: View, newState: Int) { - if (newState == BottomSheetBehavior.STATE_EXPANDED) { - binding.toolbar.isVisible = true - binding.textViewTitle.isVisible = false - binding.appbar.elevation = elevation - } else { - binding.toolbar.isVisible = false - binding.textViewTitle.isVisible = true - binding.appbar.elevation = 0f - } - } + override fun onStateChanged(bottomSheet: View, newState: Int) = Unit }) } diff --git a/app/src/main/res/layout/sheet_pages.xml b/app/src/main/res/layout/sheet_pages.xml index 2552723d5..03faf7477 100644 --- a/app/src/main/res/layout/sheet_pages.xml +++ b/app/src/main/res/layout/sheet_pages.xml @@ -9,33 +9,17 @@ + app:liftOnScroll="true"> - - + app:navigationIcon="@drawable/ic_cross" /> @@ -47,6 +31,7 @@ android:padding="@dimen/grid_spacing" android:scrollbars="vertical" app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" + app:layout_behavior="com.google.android.material.appbar.AppBarLayout$ScrollingViewBehavior" app:spanCount="3" tools:listitem="@layout/item_page_thumb" /> diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 9d246d5e3..b53cfab6e 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -9,6 +9,10 @@ 8dp + +