Is there any way to enable scrollbars for RecyclerView in code?
android, android-recyclerview, scrollbars
Solution
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);
}
}
Problem
As we saw, RecyclerView is more effective than ListView, so I prefer to use it in my project. But recently I have a trouble when put it in my custom ViewGroup. RecyclerView is easy to set scrollbars in xml like this: ``` <android.support.v7.widget.RecyclerView android:id="@+id/recycler_view" android:scrollbars="vertical" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` But I really can't find any method to set the scrollbars in code for RecyclerView, what I have tried is: ``` mRecyclerView.setVerticalScrollBarEnabled(true); ``` and then I saw this in Android's document. So I tried to make my own LayoutManager and override the functions which I thought I need. But finally I failed. So can anyone tell me how should I make my own LayoutManager or just show me an other solution. Thank you!