因为比较简单,就没做过多的解释了。直接贴了两个方法。
需要注意的是这里的 “checkPosition” 是选中的item的索引
其他大多通用的
if (recyclerView.getChildAt(0) != null){ // 获取到recyclerView item 的宽度。 int itemViewWidth = recyclerView.getChildAt(0).getWidth(); //用item的宽度 * 我点击的那个item 的索引 int itemViewLeft = itemViewWidth * checkPosition; int tabLeft = itemViewLeft + (itemViewWidth / 2) - getScrollYDistance((LinearLayoutManager) topRecyclerView.getLayoutManager()); int target = recyclerView.getWidth() / 2; if (tabLeft != target) { recyclerView.smoothScrollBy(tabLeft - target, 0); } }
public int getScrollYDistance(LinearLayoutManager linearLayoutManager) { int position = linearLayoutManager.findFirstVisibleItemPosition(); View firstVisibleChildView = linearLayoutManager.findViewByPosition(position); int itemWidth = firstVisibleChildView.getWidth(); return (position * itemWidth) - (firstVisibleChildView.getLeft()); }