在Android中拖动回收器视图项目时,在溢出之前开始滚动



在我的RecyclerViewItemTouchHelper.SimpleCallback控制拖放事件,如下所示:

@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
int fromPosition = viewHolder.getAdapterPosition();
int toPosition = target.getAdapterPosition();
Collections.swap(adapter.getShelves(), fromPosition, toPosition);
adapter.notifyItemMoved(fromPosition, toPosition);
return true;
}

长按拖动的项目。当拖动项目溢出屏幕时,滚动将正常地开始分阶段滚动。用于拖动的支架部分位于物品的顶部,因此向下拖动时没有任何问题,但是由于手指溢出设备,因此向上拖动对人们来说非常困难。当不是刚刚达到时,或者在屏幕边界的某些边距之前,如何开始向上/向下拖动?

你可以使用库 GitHub 链接

添加到依赖项:

dependencies {
implementation 'com.thesurix.gesturerecycler:gesture-recycler:1.11.0'
}

和 Kotlin:

// Define your RecyclerView and adapter as usually
val manager = LinearLayoutManager(context)
recyclerView.setHasFixedSize(true)
recyclerView.layoutManager = manager
// Extend GestureAdapter and write your own
// ViewHolder items must extend GestureViewHolder
val adapter = MonthsAdapter(R.layout.linear_item)
adapter.data = months
recyclerView.adapter = adapter

和滑动:

val gestureManager = GestureManager.Builder(recyclerView)
// Enable swipe
.setSwipeEnabled(true)
// Enable long press drag and drop 
.setLongPressDragEnabled(true)
// Enable manual drag from the beginning, you need to provide View inside your GestureViewHolder
.setManualDragEnabled(true)
// Use custom gesture flags
// Do not use those methods if you want predefined flags for RecyclerView layout manager 
.setSwipeFlags(ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT)
.setDragFlags(ItemTouchHelper.UP or ItemTouchHelper.DOWN)
.build()

最新更新