Skip to content
Davide Steduto edited this page Jan 4, 2017 · 15 revisions

In this page


XML Configuration

FastScroller needs an XML layout and Java initialization. The layout has to be placed at the end of the view hierarchy after everything else has been declared:

	...
	<android.support.v7.widget.RecyclerView
		.../>
	...
	<!-- FastScroller Layout must be at the end of ViewHierarchy
		 in order to be displayed at the top of every views -->
	<include layout="@layout/fast_scroller"/>

</FrameLayout>

Here is the layout/fast_scroller.xml

<eu.davidea.fastscroller.FastScroller
	xmlns:android="http://schemas.android.com/apk/res/android"
	xmlns:tools="http://schemas.android.com/tools"
	android:id="@+id/fast_scroller"
	android:layout_width="wrap_content"
	android:layout_height="match_parent"
	android:layout_centerHorizontal="true"
	android:layout_alignTop="@+id/swipeRefreshLayout"
	android:layout_alignBottom="@+id/swipeRefreshLayout"
	android:layout_alignParentEnd="true"
	android:layout_alignParentRight="true"
	android:visibility="gone"
	tools:visibility="visible"/>

Java initialization

In the creation of the Activity/Fragment call setFastScroller() after the Adapter has been attached to the RV:

// First, assign the Adapter to the RV
mRecyclerView.setAdapter(mAdapter);

// Then add FastScroll to the RecyclerView/Adapter.
// stateChangeListener is optional and might be an Activity/Fragment.
mAdapter.setFastScroller((FastScroller) findViewById(R.id.fast_scroller),
		Utils.getColorAccent(context)[, stateChangeListener]);

Callbacks

A useful callback is triggered when the handle is dragged, the method onFastScrollerStateChange() is invoked.
From the Activity, implement the callback method:

@Override
public void onFastScrollerStateChange(boolean scrolling) {
	// Example
	if (scrolling) hideFab();
	else showFab();
}

The text is built from the Adapter callback. It has to be implemented/overridden from the inside of a CustomAdapter that extends FlexibleAdapter:

@Override
public String onCreateBubbleText(int position) {
	IFlexible iFlexible = getItem(position);
	return iFlexible.toString().substring(0,1).toUpperCase();
}

Customization

The following 3 methods give full control on the FastScroller instance:

/**
 * Changes the visibility of the View
 */
public void toggleFastScroller();

/**
 * Returns true, if FastScroller is configured and shown, false otherwise
 */
public boolean isFastScrollerEnabled();

/**
 * Returns the FastScroller instance for more control on the settings.
 */
public FastScroller getFastScroller();

FastScroller is composed by:

Note: The Resources can be overridden by assigning the same @+id to the views of the base layout.

The activation color is assigned when initialized, usually is the accent color.

The previous Drawables and XML create the following preview:

FastScroller

Clone this wiki locally