《Android》记录RecyclerView滑动位置

        //自行替换自己的recyclerView
        val recyclerView = RecyclerView(this)
        val linearLayoutManager = LinearLayoutManager(this)
        recyclerView.layoutManager = linearLayoutManager
        //view的位置
        var mutativePosition: Int
        //偏移
        var rvMutativeOffset: Int
        recyclerView.addOnScrollListener(object : RecyclerView.OnScrollListener() {
            override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
                super.onScrolled(recyclerView, dx, dy)
                //获取layoutManager第一个view
                val view = recyclerView.layoutManager?.getChildAt(0) ?: return
                //获取第一个view当前所在的位置
                mutativePosition = recyclerView.layoutManager?.getPosition(view)!!
                //获取第一个view当前所在的位置的偏移,垂直布局为top(从上到下排序)
                //获取第一个view当前所在的位置的偏移,横向布局为left(从左到右排序)
                recyclerView.layoutManager?.getChildAt(0)?.top?.let {
                    rvMutativeOffset = it
                }
            }
        })
        
        //然后滑动
        linearLayoutManager.scrollToPositionWithOffset(mutativePosition, rvMutativeOffset)

 

posted @ 2022-08-16 12:16  白晨里的影子  阅读(454)  评论(0)    收藏  举报