RecyclerView 中的 SlidingPaneLayout 项目
SlidingPaneLayout items in RecyclerView
我正在用几个 SlidingPaneLayout
项目填充 RecyclerView
,以实现 'swipe to delete' 功能(基本上,向右拖动一个项目会显示一个删除按钮)
问题:
当我向右拖动一个项目时,似乎 RecyclerView
也拦截了我的触摸,如果我的拖动有点对角线(或不太水平)- RecyclerView
开始滚动并且 SlidingPaneLayout
取消窗格closing/opening
我已经尝试为每个 SlidingPaneLayout
添加触摸侦听器,以防止 RecyclerView 在 SlidingPaneLayout
上执行 ACTION_DOWN
后拦截触摸,但这并不好立即阻止滚动
想法?
解决方法:
防止 RecyclerView 在以下情况下拦截触摸事件:
10% < 滑动窗格偏移 < 90%
即
ViewParent parent = ...; // Should be the RecyclerView
if (slideOffset > 0.1 && slideOffset < 0.9) {
parent.requestDisallowInterceptTouchEvent(true);
} else {
parent.requestDisallowInterceptTouchEvent(false);
}
我正在用几个 SlidingPaneLayout
项目填充 RecyclerView
,以实现 'swipe to delete' 功能(基本上,向右拖动一个项目会显示一个删除按钮)
问题:
当我向右拖动一个项目时,似乎 RecyclerView
也拦截了我的触摸,如果我的拖动有点对角线(或不太水平)- RecyclerView
开始滚动并且 SlidingPaneLayout
取消窗格closing/opening
我已经尝试为每个 SlidingPaneLayout
添加触摸侦听器,以防止 RecyclerView 在 SlidingPaneLayout
上执行 ACTION_DOWN
后拦截触摸,但这并不好立即阻止滚动
想法?
解决方法:
防止 RecyclerView 在以下情况下拦截触摸事件:
10% < 滑动窗格偏移 < 90%
即
ViewParent parent = ...; // Should be the RecyclerView
if (slideOffset > 0.1 && slideOffset < 0.9) {
parent.requestDisallowInterceptTouchEvent(true);
} else {
parent.requestDisallowInterceptTouchEvent(false);
}