我有一个垂直的LinearLayout,里面有一个可以上下滚动的RecyclerView,最近我将一个ItemTouchHelper回调附加到RecyclerView,以便可以通过将它们拖到左边或右边来排除它的项目,问题是侧面拖动很容易被接受并且运动被误解,干扰向上和向下滚动动作,我已经阅读了 ItemTouchHelper.Callback 文档并且没有发现任何有用的东西,因为拖动选项的唯一属性是向上和向下, END 和 START,RIGHT 和 LEFT。
我也在考虑从 RecyclerView 中删除侧滑并将其作为一个整体附加到列表中,因此在执行此操作时显示其他列表,解决方案是否相同,因为无论如何都会有这两种可能的动作?这是我的 ItemTouch.Callback 代码:
private void recyclerSwipe(){
ItemTouchHelper.Callback itemTouch= new ItemTouchHelper.Callback() {
/**getMovementFlags()
* configuring the movements behavior
* */
@Override
public int getMovementFlags(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder) {
/**ACTION_STATE_IDLE
* denies drag and drop movements
* (up, down, left, right)
* */
int dragFlags=ItemTouchHelper.ACTION_STATE_IDLE;
/**START,END
* allows swiping a recyclerView side to side
* */
int swipeFlags=ItemTouchHelper.START|ItemTouchHelper.END;
return makeMovementFlags(dragFlags,swipeFlags);
}
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder viewHolder1) {
return false;
}
/**onSwiped()
* setting reactions to user's drags
* */
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int i) {
deleteTransaction(viewHolder);
}
};
/**attaching swipe to a recyclerView instance*/
new ItemTouchHelper(itemTouch).attachToRecyclerView(recView);
}