diff --git a/src/main/kotlin/nya/kitsunyan/foxydroid/screen/ProductsFragment.kt b/src/main/kotlin/nya/kitsunyan/foxydroid/screen/ProductsFragment.kt index 0281ec0..811fb16 100644 --- a/src/main/kotlin/nya/kitsunyan/foxydroid/screen/ProductsFragment.kt +++ b/src/main/kotlin/nya/kitsunyan/foxydroid/screen/ProductsFragment.kt @@ -79,6 +79,7 @@ class ProductsFragment(): Fragment(), CursorOwner.Callback { isMotionEventSplittingEnabled = false isVerticalScrollBarEnabled = false setHasFixedSize(true) + recycledViewPool.setMaxRecycledViews(ProductsAdapter.ViewType.PRODUCT.ordinal, 30) adapter = ProductsAdapter { screenActivity.navigateProduct(it.packageName) } addItemDecoration(DividerItemDecoration(context, DividerItemDecoration.fixed(context.resources.sizeScaled(72), 0))) diff --git a/src/main/kotlin/nya/kitsunyan/foxydroid/widget/RecyclerFastScroller.kt b/src/main/kotlin/nya/kitsunyan/foxydroid/widget/RecyclerFastScroller.kt index d8d7bbc..4e7bffd 100644 --- a/src/main/kotlin/nya/kitsunyan/foxydroid/widget/RecyclerFastScroller.kt +++ b/src/main/kotlin/nya/kitsunyan/foxydroid/widget/RecyclerFastScroller.kt @@ -23,6 +23,7 @@ class RecyclerFastScroller(private val recyclerView: RecyclerView) { private val thumbDrawable = recyclerView.context.getDrawableFromAttr(android.R.attr.fastScrollThumbDrawable) private val trackDrawable = recyclerView.context.getDrawableFromAttr(android.R.attr.fastScrollTrackDrawable) + private val minTrackSize = recyclerView.resources.sizeScaled(32) private data class FastScrolling(val startAtThumbOffset: Float?, val startY: Float, val currentY: Float) @@ -129,8 +130,8 @@ class RecyclerFastScroller(private val recyclerView: RecyclerView) { } event.action == MotionEvent.ACTION_DOWN -> { val rtl = recyclerView.layoutDirection == RecyclerView.LAYOUT_DIRECTION_RTL - val maxWidth = max(thumbDrawable.intrinsicWidth, trackDrawable.intrinsicWidth) - val atThumbVertical = if (rtl) event.x <= maxWidth else event.x >= recyclerView.width - maxWidth + val trackWidth = max(minTrackSize, max(thumbDrawable.intrinsicWidth, trackDrawable.intrinsicWidth)) + val atThumbVertical = if (rtl) event.x <= trackWidth else event.x >= recyclerView.width - trackWidth atThumbVertical && run { withScroll { itemHeight, thumbHeight, range -> val offset = currentOffset(itemHeight, range)