【问题标题】:Android RecyclerView Partial Swipe with Delete ButtonAndroid RecyclerView 部分滑动删除按钮
【发布时间】:2017-06-19 12:30:02
【问题描述】:

我正在尝试在RecyclerView 中实现部分滑动并添加一个删除按钮。我只想在用户单击删除按钮后删除刷过的行。我正在使用ItemTouchHelperSimpleCallback 并且能够使用下面的代码实现部分滑动。我有两个待处理的任务:

  1. 我正在使用onChildDraw 方法实现部分滑动。我目前正在部分滑动上绘制一个红色矩形。我想在其中添加文本“删除”。是否可以添加按钮而不是绘制矩形?
  2. 如何在矩形/按钮上添加点击监听器以执行删除操作。

    @Override
    public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder, float dX, float dY, int actionState, boolean isCurrentlyActive) {
        try {
    
            Bitmap icon;
            if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {
                View itemView = viewHolder.itemView;
    
                float height = (float) itemView.getBottom() - (float) itemView.getTop();
                float width = height / 5;
                viewHolder.itemView.setTranslationX(dX / 5);
    
    
                Paint paint = new Paint();
    
                paint.setColor(Color.parseColor("#D32F2F"));
                RectF background = new RectF((float) itemView.getRight() + dX / 5, (float) itemView.getTop(), (float) itemView.getRight(), (float) itemView.getBottom());
    
               RectF icon_dest = new RectF((float) (itemView.getRight() + dX /7), (float) itemView.getTop()+width, (float) itemView.getRight()+dX/20, (float) itemView.getBottom()-width);
    
               c.drawBitmap(null, null, icon_dest, paint);
            } else {
                super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    

【问题讨论】:

标签: android android-recyclerview onclicklistener swipe


【解决方案1】:

回答您的问题:

  1. 是的。这是可能的,但不是在 onChildDraw 方法中。有很多 第 3 方库使用两层方法。第一层是 你的项目视图,第二个有所有的按钮。当你滑动时,它 显示按钮层,您可以通过设置处理点击事件 按钮的 OnClickListener。
  2. 将 OnClickListener 添加到您在 onChildDraw 中绘制的按钮 方法,你必须设置 recylerView.setOnTouchListener 来获取 (x,y) 在屏幕上。请查看 AdamWei 的帖子here 说明。

您也可以查看我的帖子here。我已经通过使用 ItemTouchHelper.SimpleCallback 实现了预期的效果。这是一个简单的帮助类,易于使用。

【讨论】:

  • 请避免链接,因为它们将来可能会损坏。这在 Quora 上是可以接受的,但在 SO 上不行。请在您的回答中说明如何解决此问题。
猜你喜欢
  • 2023-03-21
  • 2020-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多