正常行为:当我们滚动滚动回收器视图时,项目将滚动,然后点击,RV将停止滚动,而不执行项目单击。
我需要什么:停止滚动+单击项目!
有什么骇人听闻的方式吗?
答案 0 :(得分:0)
我从中得到了答案 link
我想添加更多代码...
public class MyRecyclerView extends RecyclerView {
public MyRecyclerView(Context context) {
super(context);
}
public MyRecyclerView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
public MyRecyclerView(Context context, @Nullable AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent e) {
//https://stackoverflow.com/a/46569656/8863321
boolean requestCancelDisallowInterceptTouchEvent = getScrollState() == SCROLL_STATE_SETTLING;
boolean consumed = super.onInterceptTouchEvent(e);
final int action = e.getActionMasked();
switch (action) {
case MotionEvent.ACTION_DOWN:
if( requestCancelDisallowInterceptTouchEvent ){
getParent().requestDisallowInterceptTouchEvent(false);
// stop scroll to enable child view get the touch event
stopScroll();
// not consume the event
return false;
}
break;
}
return consumed;
} }
这是非常罕见的情况,但是此技巧可能会在将来对某人有所帮助!