在RecyclerView焦点上滑动动作菜单并向后滑动问题

问题描述

我正在尝试在RecyclerView中实现一个简单的滑动操作菜单,并且我试图使用一个简单的方法,即使用itemtouchhelper和包含该行本身以及下面附有按钮的布局(每一行)下面该行。我应该给他们看一下。

虽然布局按预期工作,但我仍然遇到许多重要问题。这是屏幕截图:

current layout

问题如下:

  • 我需要在按钮上单击3次以使触摸发生
  • 执行此操作时,除非再次单击并将其从行的最末端拖动,否则无法将其滑回原位。如果我不单击按钮,则可以正常向后滑动行。

这是我目前正在使用的简单itemtouchhelper回调:

class FileSwipeCallback :
    itemtouchhelper.SimpleCallback(1,1) {

    override fun getMovementFlags(
        recyclerView: RecyclerView,viewHolder: RecyclerView.ViewHolder
    ): Int {
        return if (viewHolder is FileAdapter.FileViewHolder) {
            val swipeFlags = itemtouchhelper.START or itemtouchhelper.END
            makeMovementFlags(0,swipeFlags)
        } else 0
    }

    override fun onMove(
        recyclerView: RecyclerView,viewHolder: RecyclerView.ViewHolder,target: RecyclerView.ViewHolder
    ): Boolean {
        return true
    }

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

    override fun onChildDraw(
        c: Canvas,recyclerView: RecyclerView,dX: Float,dY: Float,actionState: Int,isCurrentlyActive: Boolean
    ) {
        if (actionState == itemtouchhelper.ACTION_STATE_SWIPE) {
            // Swipe left
            if (dX < 0) {
                (viewHolder as FileAdapter.FileViewHolder).itemView.findViewById<ConstraintLayout>(
                    R.id.fileItemActions
                ).visibility = View.VISIBLE
                val transitionX = 0.295f * dX
                getDefaultUIUtil().onDraw(
                    c,recyclerView,(viewHolder.itemView.findViewById(
                        R.id.fileInfoRow
                    )),transitionX,dY,actionState,isCurrentlyActive
                )
            }
        }
    }
}

我非常感谢您提供解决方案。我已经在Stack Overflow上进行过搜索,但只发现不清楚或不完整的解决方案。

编辑:使用新的和更经典的两层方法更新了问题。可见的结果是相同的,但是问题有所改变。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...