From eb88d4e94fed3a83c730099a3c1ac47b81537f93 Mon Sep 17 00:00:00 2001 From: Jays2Kings Date: Thu, 29 Apr 2021 00:22:49 -0400 Subject: [PATCH] changing dragging behavior of bottom sheets to be like iOS ie: if at the top of the scrollview it can be dragged down, even if you scroll a bit down then up without letting go --- .../ui/extension/RecyclerWithScrollerView.kt | 21 ++++--------------- .../tachiyomi/widget/E2EBottomSheetDialog.kt | 11 ++-------- 2 files changed, 6 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/extension/RecyclerWithScrollerView.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/extension/RecyclerWithScrollerView.kt index d9ff8f64b0..3773487d23 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/extension/RecyclerWithScrollerView.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/extension/RecyclerWithScrollerView.kt @@ -7,7 +7,6 @@ import androidx.recyclerview.widget.RecyclerView import eu.davidea.flexibleadapter.FlexibleAdapter import eu.davidea.flexibleadapter.items.IFlexible import eu.kanade.tachiyomi.databinding.RecyclerWithScrollerBinding -import eu.kanade.tachiyomi.util.view.isExpanded import eu.kanade.tachiyomi.util.view.updatePaddingRelative class RecyclerWithScrollerView @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null) : @@ -22,24 +21,12 @@ class RecyclerWithScrollerView @JvmOverloads constructor(context: Context, attrs binding.recycler.addOnScrollListener(object : RecyclerView.OnScrollListener() { override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) { super.onScrollStateChanged(recyclerView, newState) - if (sheet.isOnView(this@RecyclerWithScrollerView) && - ( - newState == RecyclerView.SCROLL_STATE_IDLE || - newState == RecyclerView.SCROLL_STATE_SETTLING - ) + if (newState == RecyclerView.SCROLL_STATE_IDLE || + newState == RecyclerView.SCROLL_STATE_SETTLING ) { sheet.sheetBehavior?.isDraggable = true - } - } - - override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { - super.onScrolled(recyclerView, dx, dy) - if (sheet.isOnView(this@RecyclerWithScrollerView) && - sheet.sheetBehavior.isExpanded() && - recyclerView.canScrollVertically(-1) && - recyclerView.scrollState != RecyclerView.SCROLL_STATE_SETTLING - ) { - sheet.sheetBehavior?.isDraggable = false + } else { + sheet.sheetBehavior?.isDraggable = !recyclerView.canScrollVertically(-1) } } }) diff --git a/app/src/main/java/eu/kanade/tachiyomi/widget/E2EBottomSheetDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/widget/E2EBottomSheetDialog.kt index ef938b90de..3e0d442a7a 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/widget/E2EBottomSheetDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/widget/E2EBottomSheetDialog.kt @@ -67,15 +67,8 @@ abstract class E2EBottomSheetDialog(activity: Activity) : newState == RecyclerView.SCROLL_STATE_SETTLING ) { sheetBehavior.isDraggable = true - } - } - - override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { - super.onScrolled(recyclerView, dx, dy) - if (recyclerView.canScrollVertically(-1) && - recyclerView.scrollState != RecyclerView.SCROLL_STATE_SETTLING - ) { - sheetBehavior.isDraggable = false + } else { + sheetBehavior.isDraggable = !recyclerView.canScrollVertically(-1) } } })