问题描述
我正在尝试在RecyclerView中实现一个简单的滑动操作菜单,并且我试图使用一个简单的方法,即使用itemtouchhelper和包含该行本身以及下面附有按钮的布局(每一行)下面该行。我应该给他们看一下。
虽然布局按预期工作,但我仍然遇到许多重要问题。这是屏幕截图:
问题如下:
- 我需要在按钮上单击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 (将#修改为@)