public static int getOrientation(@NonNull RecyclerView.LayoutManager layoutManager) { if (layoutManager instanceof GridLayoutManager) { return ((GridLayoutManager) layoutManager).getOrientation(); } else if (layoutManager instanceof LinearLayoutManager) { return ((LinearLayoutManager) layoutManager).getOrientation(); } else if (layoutManager instanceof StaggeredGridLayoutManager) { return ((StaggeredGridLayoutManager) layoutManager).getOrientation(); } else { return ORIENTATION_UNKNOWN; } }
public static int getLayoutType(@Nullable RecyclerView.LayoutManager layoutManager) { if (layoutManager instanceof GridLayoutManager) { if (((GridLayoutManager) layoutManager).getOrientation() == RecyclerView.HORIZONTAL) { return LAYOUT_TYPE_GRID_HORIZONTAL; } else { return LAYOUT_TYPE_GRID_VERTICAL; } } else if (layoutManager instanceof LinearLayoutManager) { if (((LinearLayoutManager) layoutManager).getOrientation() == RecyclerView.HORIZONTAL) { return LAYOUT_TYPE_LINEAR_HORIZONTAL; } else { return LAYOUT_TYPE_LINEAR_VERTICAL; } } else if (layoutManager instanceof StaggeredGridLayoutManager) { if (((StaggeredGridLayoutManager) layoutManager).getOrientation() == StaggeredGridLayoutManager.HORIZONTAL) { return LAYOUT_TYPE_STAGGERED_GRID_HORIZONTAL; } else { return LAYOUT_TYPE_STAGGERED_GRID_VERTICAL; } } else { return LAYOUT_TYPE_UNKNOWN; } }
@Override public void run() { int first = getFirstVisiblePosition(); int last = getLastVisiblePosition(); int childPosition = 0; for (int i = first; i < last; i++) { if (i == position) { int offset = getBottomOffset(sglm.getOrientation(), childPosition); sglm.scrollToPositionWithOffset(position, offset); break; } childPosition++; } } });
@Override public void run() { int first = getFirstVisiblePosition(); int last = getLastVisiblePosition(); int childPosition = 0; for (int i = first; i < last; i++) { if (i == position) { int offset = getCenterOffset(sglm.getOrientation(), childPosition); sglm.scrollToPositionWithOffset(position, offset); break; } childPosition++; } } });
} else if (lm instanceof StaggeredGridLayoutManager) { final StaggeredGridLayoutManager sglm = (StaggeredGridLayoutManager) lm; int offset = getBottomOffset(sglm.getOrientation(), 0); sglm.scrollToPositionWithOffset(position, offset);
} else if (lm instanceof StaggeredGridLayoutManager) { final StaggeredGridLayoutManager sglm = (StaggeredGridLayoutManager) lm; int offset = getCenterOffset(sglm.getOrientation(), 0); sglm.scrollToPositionWithOffset(position, offset);