即使滚动RecyclerView,也可以启用单击项目

问题描述 投票:-1回答:1

正常行为:当我们滚动回收器视图时,项目将滚动,然后点击,RV将停止滚动,而不是执行项目单击。

我需要的:停止滚动+执行项目点击!

任何hacky方式?

android android-recyclerview touch android-touch-event
1个回答
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;

} }

这是非常罕见的情况,但这个技巧可能在将来帮助某人!

© www.soinside.com 2019 - 2024. All rights reserved.