package com.afollestad.materialdialogs.util; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import com.afollestad.materialdialogs.MaterialDialog; public class RecyclerUtil { public static boolean canRecyclerViewScroll(View view) { RecyclerView rv = (RecyclerView) view; final RecyclerView.LayoutManager lm = rv.getLayoutManager(); final int count = rv.getAdapter().getItemCount(); int lastVisible; if (lm instanceof LinearLayoutManager) { LinearLayoutManager llm = (LinearLayoutManager) lm; lastVisible = llm.findLastVisibleItemPosition(); } else if (lm instanceof GridLayoutManager) { GridLayoutManager glm = (GridLayoutManager) lm; lastVisible = glm.findLastVisibleItemPosition(); } else { throw new MaterialDialog.NotImplementedException("Material Dialogs currently only supports LinearLayoutManager and GridLayoutManager. Please report any new layout managers."); } if (lastVisible == -1) return false; /* We scroll if the last item is not visible */ final boolean lastItemVisible = lastVisible == count - 1; return !lastItemVisible || rv.getChildAt(rv.getChildCount() - 1).getBottom() > rv.getHeight() - rv.getPaddingBottom(); } public static boolean isRecyclerView(View view) { return view instanceof RecyclerView; } }