启用点击项,即使滚动RecyclerView

时间:2018-06-24 11:31:21

标签: android android-recyclerview touch android-touch-event

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

我需要什么:停止滚动+单击项目!

有什么骇人听闻的方式吗?

1 个答案:

答案 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;

} }

这是非常罕见的情况,但是此技巧可能会在将来对某人有所帮助!