From dabb5ef766b4596d83d27f2b679e71e86cc605be Mon Sep 17 00:00:00 2001 From: tibbi Date: Tue, 5 Dec 2017 23:18:32 +0100 Subject: [PATCH] add a callback for updating the fastscroller bubble text --- build.gradle | 2 +- .../commons/views/FastScroller.kt | 15 +++++++++------ 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/build.gradle b/build.gradle index f09ac05a4..6689999cc 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ buildscript { propMinSdkVersion = 16 propTargetSdkVersion = propCompileSdkVersion propVersionCode = 1 - propVersionName = '3.1.2' + propVersionName = '3.1.3' kotlin_version = '1.2.0' support_libs = '27.0.2' } diff --git a/commons/src/main/kotlin/com/simplemobiletools/commons/views/FastScroller.kt b/commons/src/main/kotlin/com/simplemobiletools/commons/views/FastScroller.kt index 0e4cb7b26..e966bab35 100644 --- a/commons/src/main/kotlin/com/simplemobiletools/commons/views/FastScroller.kt +++ b/commons/src/main/kotlin/com/simplemobiletools/commons/views/FastScroller.kt @@ -17,13 +17,14 @@ import com.simplemobiletools.commons.extensions.baseConfig // based on https://blog.stylingandroid.com/recyclerview-fastscroll-part-1 class FastScroller : FrameLayout { var isHorizontal = false - var allowBubbleDisplay = false private var handle: View? = null private var bubble: TextView? = null private var currHeight = 0 private var currWidth = 0 private var bubbleOffset = 0 + private var allowBubbleDisplay = false + private var fastScrollCallback: ((Int) -> Unit)? = null private val HANDLE_HIDE_DELAY = 1000L private var recyclerView: RecyclerView? = null @@ -35,7 +36,7 @@ class FastScroller : FrameLayout { constructor(context: Context, attrs: AttributeSet, defStyle: Int) : super(context, attrs, defStyle) - fun setViews(recyclerView: RecyclerView, swipeRefreshLayout: SwipeRefreshLayout? = null) { + fun setViews(recyclerView: RecyclerView, swipeRefreshLayout: SwipeRefreshLayout? = null, callback: ((Int) -> Unit)? = null) { this.recyclerView = recyclerView this.swipeRefreshLayout = swipeRefreshLayout updatePrimaryColor() @@ -52,6 +53,9 @@ class FastScroller : FrameLayout { } } }) + + allowBubbleDisplay = callback != null + fastScrollCallback = callback } fun updatePrimaryColor() { @@ -162,15 +166,14 @@ class FastScroller : FrameLayout { val targetPos = getValueInRange(0f, (itemCount - 1).toFloat(), proportion * itemCount).toInt() (recyclerView!!.layoutManager as LinearLayoutManager).scrollToPositionWithOffset(targetPos, 0) + fastScrollCallback?.invoke(targetPos) } } override fun onFinishInflate() { super.onFinishInflate() handle = getChildAt(0) - if (allowBubbleDisplay) { - bubble = getChildAt(1) as? TextView - } + bubble = getChildAt(1) as? TextView if (bubble != null) { bubbleOffset = resources.getDimension(R.dimen.fastscroll_height).toInt() @@ -182,7 +185,7 @@ class FastScroller : FrameLayout { handle!!.animate().alpha(1f).start() // override the fade animation handle!!.alpha = 1f - if (handle!!.isSelected) { + if (handle!!.isSelected && allowBubbleDisplay) { bubble?.animate()?.alpha(1f)?.start() bubble?.alpha = 1f }