This library is available on jitpack.io.
Add it in your settings.gradle.kts at the end of repositories:
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
mavenCentral()
maven { url = uri("https://jitpack.io") }
}
}implementation("com.github.I3eyonder:android-standalone-scroll-bar:Tag")<androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<com.hieupt.android.standalonescrollbar.StandaloneScrollBar
android:id="@+id/scrollbar"
android:layout_width="wrap_content"
android:layout_height="match_parent" />
scrollbar.attachTo(recyclerView)To using with [NestedScrollView, ScrollView, HorizontalScrollView, WebView], please use [NestedScrollView2, ScrollView2, HorizontalScrollView2, WebView2] for your layout instead.
scrollbar.attachTo(nestedScrollView2)You can also implement your own ScrollableView to use StandaloneScrollBar with any View. You can refer VerticalScrollViewHelper or HorizontalScrollViewHelper for example of implementation.
scrollbar.attachTo(scrollableView)-
Custom track/thumb visibility by using
VisibilityManager.Library comes with 2 built-in visibility managers:
SimpleVisibilityManagerandFadeVisibilityManager.FadeVisibilityManageris used as default one.
scrollbar.visibilityManager = YourCustomVisibilityManager()Attention:
- The logic for showing/hiding of a
VisibilityManageris implemented differently, so changing theVisibilityManagermidway can lead to conflicts. Therefore, to avoid potential errors, theVisibilityManagermust be set before the scrollbar is attached to the view. - Track/thumb should not be hidden using the
GONEview. Doing so may affect the calculation of the track/thumb’s size and position. Instead, usingINVISIBLEis a better approach.
- Custom track/thumb drawable using attribute
scrollbarTrackDrawableandscrollbarThumbDrawableor through java/kotlin
scrollbar.customTrackDrawable = customDrawable
scrollbar.customThumbDrawable = customDrawable- Tint track/thumb by using attribute
scrollbarDefaultTrackTintandscrollbarDefaultThumbTint
scrollbar.defaultThumbTint = ColorStateList()
scrollbar.defaultTrackTint = ColorStateList()- Custom thumb length by using attribute
scrollbarThumbLength|scrollbarThumbLengthByTrackRatio|scrollbarMinThumbLength|scrollbarAutoThumbLength. If multi attributes is set, the priorities order will bescrollbarThumbLength>scrollbarThumbLengthByTrackRatio>scrollbarAutoThumbLength
scrollbar.thumbLength = desireLengthInPx
scrollbar.thumbLengthByTrackRatio = percentOfTrackLength //[0.0..1.0]
scrollbar.minThumbLength = desireLengthInPx
scrollbar.autoThumbLength = true|false- Enable/Disable thumb bar drag ability using attribute
scrollbarDraggable
scrollbar.draggable = true|false-
Delay duration before scrollbar auto hide in milliseconds (attribute
scrollbarDelayBeforeAutoHideDuration)There are 2 special constants:
StandaloneScrollBar.AUTO_HIDE_SCROLLBAR_DELAY_INFINITY_MILLIS(attribute valueinfinity): This cause scrollbar always shown.StandaloneScrollBar.AUTO_HIDE_SCROLLBAR_DELAY_ZERO_MILLIS(attribute valuezero): This cause scrollbar always hidden.
scrollbar.delayBeforeAutoHide = delayTimeInMillis