(Smooth)ScrollToPosition doesn't work properly with RecyclerView

Finally I was able to make it work! LinearLayoutManager.scrollToPositionWithOffset(int, int) did the trick.

I also have same issue, but managed to fix the issue by Customizing SmoothScroller

let Custom LayoutManager as below

public class CustomLayoutManager extends LinearLayoutManager {
    private static final float MILLISECONDS_PER_INCH = 50f;
    private Context mContext;

    public CustomLayoutManager(Context context) {
        mContext = context;

    public void smoothScrollToPosition(RecyclerView recyclerView,
        RecyclerView.State state, final int position) {

        LinearSmoothScroller smoothScroller = 
            new LinearSmoothScroller(mContext) {

            //This controls the direction in which smoothScroll looks
            //for your view
            public PointF computeScrollVectorForPosition
            (int targetPosition) {
                return CustomLayoutManager.this

            //This returns the milliseconds it takes to 
            //scroll one pixel.
            protected float calculateSpeedPerPixel
                (DisplayMetrics displayMetrics) {
                return MILLISECONDS_PER_INCH/displayMetrics.densityDpi;


(documentation commented inside the code given above)Please set the above LayoutManager to the recyerview

CustomLayoutManagerlayoutManager = new CustomLayoutManager(getActivity());

by using the custom Layout manager

scrollToPosition also working well in my case u can use


also if you want to adjust the speed of smoothScrollToPosition please override the

private static final float MILLISECONDS_PER_INCH = 50f;

in CustomLayoutManager. So if we put the value as 1f the smoothScrollToPosition will be faster like scrollToPosition.increasing value make delay and decreasing will make the speed of scroll. Hope this will useful.

In My case,


also did not work. But


works fine for me...