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:
SimpleVisibilityManager
andFadeVisibilityManager
.FadeVisibilityManager
is used as default one.
scrollbar.visibilityManager = YourCustomVisibilityManager()
Attention:
- The logic for showing/hiding of a
VisibilityManager
is implemented differently, so changing theVisibilityManager
midway can lead to conflicts. Therefore, to avoid potential errors, theVisibilityManager
must be set before the scrollbar is attached to the view. - Track/thumb should not be hidden using the
GONE
view. Doing so may affect the calculation of the track/thumb’s size and position. Instead, usingINVISIBLE
is a better approach.
- Custom track/thumb drawable using attribute
scrollbarTrackDrawable
andscrollbarThumbDrawable
or through java/kotlin
scrollbar.customTrackDrawable = customDrawable
scrollbar.customThumbDrawable = customDrawable
- Tint track/thumb by using attribute
scrollbarDefaultTrackTint
andscrollbarDefaultThumbTint
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