RecyclerView 横向滑动,点击Item滑动居中

时间:2023-02-03 19:33:07


    因为比较简单,就没做过多的解释了。直接贴了两个方法。

    需要注意的是这里的 “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());
}