我正在尝试在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上进行过搜索,但只发现不清楚或不完整的解决方案。
编辑:使用新的和更经典的两层方法更新了问题。可见的结果是相同的,但是问题有所改变。