[RecyclerView & ItemTouchHelper]setPadding 为 RecyclerView 后,拖拽项目失败?

问题描述

1.itemtouchhelper 起初运行良好。 Kotlin 代码如下

val itemtouchhelper = itemtouchhelper(object: itemtouchhelper.Callback(){
    
    override fun getMovementFlags(recyclerView: RecyclerView,viewHolder:RecyclerView.ViewHolder): Int{
        val dragFlag = itemtouchhelper.UP | itemtouchhelper.Down
        val swipeFlags = 0
        return makeMovementFlags(dragFlags,swipeFlags)
    }

    override fun onMove(recyclerView: RecyclerView,viewHolder: RecyclerView.ViewHolder,target: RecyclerView.ViewHolder){
        
        val fromPosition = viewHolder.adapterPosition
        val toPosition = target.adapterPosition
        Collections.swap(mList,fromPosition,toPosition)
        mAdapter.notifyItemmoved(fromPosition,toPosition)

    }

    override fun onSwiped(viewHolder: RecyclerView.ViewHolder,direction: Int){

    }

})

itemtouchhelper.attachToRecyclerView(mRecyclerView)

enter image description here

2.如果我将Padding设置为RecyclerView,当我尝试拖动item时会出现错误

mRecyclerView.setPadding(0,250,0) // (left,top,right,bottom)

enter image description here

当recyclerview在其顶部时,我们可以很容易地拖动项目(recyclerview尚未滚动,它在其顶部)。但是,如果 recyclerview 不在其顶部(recyclerview 已向下滚动),则当我拖动该项目时,它会立即到达最高位置,而不是我拖动到的位置。

观看 gif 以了解更多详细信息,有人可以帮助我 :(

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)