【问题标题】:RecyclerView with ItemTouchHelper only part swipeable带有 ItemTouchHelper 的 RecyclerView 仅部分可滑动
【发布时间】:2016-07-08 17:06:44
【问题描述】:

我有一个 recyclerview 列表,里面有这样的项目:

红色方块只能向左滑动(拖放),绿色只能向右滑动。当元素被滑动时,出现并带有如下选项的图像:

-向左滑动:

-向右滑动:

布局项具有这样的外观:

<RelativeLayout>
   <LinearLayout>
      <ImageView/> //Red square
      <ImageView/>  //Green square
   </LinearLayout>
   <LinearLayout>
      <ImageView/>  //Red square swiped action
      <ImageView/>  //Green square swiped action
   </LinearLayout>
</RelativeLayout>

我正在尝试使用 ItemTouchHelper.Callback 执行此操作,并覆盖方法 onChildDraw 以制作正确的动画。但我不能用方形已经刷卡,并做出正确的动画。 ¿ 实现这一目标的另一种方法?

【问题讨论】:

    标签: android android-recyclerview swipe itemtouchhelper


    【解决方案1】:

    根据大量示例,在 RecycleView 中创建自己的回调监听器很容易。就像在this example 中一样。你需要提供你自己的行为。

    上面链接中的 SimpleItemTouchHelperCallback 示例。

        @Override
        public int getMovementFlags(RecyclerView recyclerView, ViewHolder viewHolder) {
            int dragFlags = ItemTouchHelper.UP | ItemTouchHelper.DOWN;
            int swipeFlags = ItemTouchHelper.START | ItemTouchHelper.END;
    
            //Four your Red field use flags
            int redFlags = ItemTouchHelper.START;
    
            //Four your Green field use flags
            int greenFlags = ItemTouchHelper.END;
    
            return makeMovementFlags(dragFlags, swipeFlags);
        }
    

    【讨论】:

    • 我如何知道我是否必须 return makeMovementFlahs(0,redFlags)return makeMovementFlahs(0, greenFlags) ?我怎么知道运动的开始/结束位置(红色或绿色方块)?
    • 您只需在需要查看的情况下执行 startDrag 操作。我想你不知道,回调是如何工作的......你应该使用这个例子,了解更多信息github.com/GensaGames/Sample-KenBurnsEffect-in-RecycleView
    • 我看过这个例子。我正在使用OnTouchListener 来检测红色和绿色方块中的滑动,然后我调用startDrag() 并且一切正常。但我不知道如何禁用其他滑动动作,因为回调总是被调用或如何在方法getMovementFlags 中返回 0,0
    猜你喜欢
    • 2019-09-27
    • 1970-01-01
    • 2017-02-07
    • 1970-01-01
    • 2017-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多