RecyclerView 项目并滑动以显示按钮

Nim*_*kai 5 android android-recyclerview

我正在尝试为RecyclerView的项目实现滑动。实现大多基于

背景

当用户滑动视图时,它会移动到正确的位置,但不会消失。-好的

示例:在用户滑动的项目 2 下方。红色方块是视图背后的背景。 在此处输入图片说明

然后:当用户点击滑动)被滑动的项目时,会触发转义动画(默认)。- 好的

问题:视图没有完全回到默认位置。用户可以在屏幕右侧看到部分背景(如下所示)。它需要第二次点击才能将视图设置在正确的位置。- 不好 在此处输入图片说明

为了更好地展示行为,我创建了一个GIF

代码关于ItemTouchHelper.SimpleCallback

class SwipeCallback : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT) {


    override fun onMove(recyclerView: RecyclerView, viewHolder: ViewHolder, target: ViewHolder) =
        false

    override fun onChildDraw(
        canvas: Canvas,
        recyclerView: RecyclerView,
        viewHolder: ViewHolder,
        dX: Float,
        dY: Float,
        actionState: Int,
        active: Boolean
    ) {

        if (actionState == ItemTouchHelper.ACTION_STATE_SWIPE) {

            // SWIPE LEFT
            if (dX < 0) {

                // When transitionX is multiply by ~0.4f or lower value, view is displayed properly.
                // Otherwise when user will "tap" the background will be shown.
                // On the other hand if we do "proper" swipe to escape view will be displayed properly.
                val transitionX = 0.7f * dX
                super.onChildDraw(
                    canvas,
                    recyclerView,
                    viewHolder,
                    transitionX,
                    dY,
                    actionState,
                    active
                )
            }
        }
    }

    override fun onSwiped(viewHolder: ViewHolder, direction: Int) {
    }
}

Run Code Online (Sandbox Code Playgroud)

演示是否有人感兴趣的示例项目