【问题标题】:Start scrolling before overflow when dragging the recyclerview item in Android在Android中拖动recyclerview项目时在溢出前开始滚动
【发布时间】:2020-09-12 09:48:01
【问题描述】:

在我的RecyclerView 上使用ItemTouchHelper.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;
}

长按拖动的项目。当拖动项超出屏幕时,通常会逐步开始向其方向滚动。用于拖动的支架部分位于项目的顶部,因此向下拖动时没有任何问题,但由于手指溢出设备,因此向上拖动对人来说非常困难。如何在未达到或在屏幕边界的某个边距之前开始向上/向下拖动?

【问题讨论】:

    标签: java android android-recyclerview


    【解决方案1】:

    你可以使用库 github link

    添加到依赖项:

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

    和科特林:

        // 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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-28
      • 1970-01-01
      • 1970-01-01
      • 2021-01-15
      • 2020-09-25
      • 1970-01-01
      • 1970-01-01
      • 2023-01-22
      相关资源
      最近更新 更多