查看项目并滑动以显示按钮

时间:2019-12-05 19:57:39

标签: android android-recyclerview

我正在尝试对RecyclerView的商品进行滑动。 实施主要基于this

背景

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

示例:用户滑动项目2下方。红色方块是视图后面的背景。 enter image description here

然后:当用户点击滑动)滑动项目时,将触发逃生动画(默认值)。 -确定

问题:该视图无法完全返回到默认位置。用户可以在屏幕右侧看到部分背景(如下所示)。 需要第二次点击才能将视图设置在正确的位置。 -不好 enter image description here

为了更好地演示行为,我创建了一个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) {
    }
}

Sample project来演示是否有人要对其进行测试。

1 个答案:

答案 0 :(得分:-1)

您尝试过AndroidSwipeLayout吗?已经有一个不错的库,我也可以在我的应用程序中使用它。 https://github.com/daimajia/AndroidSwipeLayout