Is there any way to enable scrollbars for RecyclerView in code?
Set the vertical scrollbar in the xml layout
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical" />
At the moment it seems to be impossible to enable scroll bars programmatically. The reason for that behaviour is that Android does not call either View.initializeScrollbarsInternal(TypedArray a)
or View.initializeScrollbars(TypedArray a)
. Both methods are only called if you instantiate your RecyclerView with an AttributeSet.
As a workaround I would suggest, that you create a new layout file with your RecyclerView only:
vertical_recycler_view.xml
<android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:scrollbars="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Now you can inflate and add the RecyclerView with scrollbars everywhere you want:
MyCustomViewGroup.java
public class MyCustomViewGroup extends FrameLayout
{
public MyCustomViewGroup(Context context)
{
super(context);
RecyclerView verticalRecyclerView = (RecyclerView) LayoutInflater.from(context).inflate(R.layout.vertical_recycler_view, null);
verticalRecyclerView.setLayoutManager(new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false));
addView(verticalRecyclerView);
}
}
I would prefer to use ContextThemeWrapper
for that, because it can be used dynamically from code.
First define in Style.xml:
<style name="ScrollbarRecyclerView" parent="android:Widget">
<item name="android:scrollbars">vertical</item>
</style>
And then whenever you initialize your RecyclerView use ContextThemeWrapper
:
RecyclerView recyclerView = new RecyclerView(new ContextThemeWrapper(context, R.style.ScrollbarRecyclerView));
Just in xml properties
<android.support.v7.widget.RecyclerView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/recyclerView"
android:scrollbars="vertical" <!-- type of scrollbar -->
android:scrollbarThumbVertical="@android:color/darker_gray" <!--color of scroll bar-->
android:scrollbarSize="5dp"> <!--width of scroll bar-->
</android.support.v7.widget.RecyclerView>