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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了即使滚动RecyclerView,也可以启用单击项目相关的知识,希望对你有一定的参考价值。

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

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

任何hacky方式?

答案

我从这个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;

} }

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

以上是关于即使滚动RecyclerView,也可以启用单击项目的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在代码中为 RecyclerView 启用滚动条?

为啥即使在自定义 OnTouchListener 实现后 RecyclerView 仍然滚动?

单击项目Android时RecyclerView滚动

当nestedscrollview 中的recyclerview 滚动时,对讲焦点转到工具栏项

当滚动超出最初可见的范围时,无法访问 recyclerview 中的 textview

滚动时单击不在 CoordinatorLayout 中的 RecyclerView 上工作