程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了自定义 SwipeToRefresh 移动 RecyclerView Android 嵌套滚动大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决自定义 SwipeTorefresh 移动 RecyclerView Android 嵌套滚动?

开发过程中遇到自定义 SwipeTorefresh 移动 RecyclerView Android 嵌套滚动的问题如何解决?下面主要结合日常开发的经验,给出你关于自定义 SwipeTorefresh 移动 RecyclerView Android 嵌套滚动的解决方法建议,希望对你解决自定义 SwipeTorefresh 移动 RecyclerView Android 嵌套滚动有所启发或帮助;

我正在尝试使用自定义视图实现自定义滑动以在 RecyclerVIEw 上刷新,以便将带有刷新符号的回收器向下移动。

我在自定义视图中使用 onIntercepttouchEventontouchEvent 方法来处理滑动。

 @OverrIDe
    public Boolean onIntercepttouchEvent(MotionEvent ev) {
        if (!canSwipE) {
            return false;
        }
        else {
            switch (ev.getActionMasked()) {
                case MotionEvent.ACTION_DOWN:
                    isDown = true;
                    startY = ev.getRawY();
                    return true;
                case MotionEvent.ACTION_MOVE:
                    dy = ev.getRawY() - startY;

                    if (dy < 0) {
                        canSwipe = false;
                    }
                    break;
                case MotionEvent.ACTION_UP:
                    break;
            }
            return true;
        }
    }


    @OverrIDe
    public Boolean ontouchEvent(MotionEvent event) {
        if (!canSwipE) {
            return false;
        }
        else {
            switch (event.getActionMasked()) {
                case MotionEvent.ACTION_DOWN:
                    isDown = true;
                    startY = event.getRawY();
                    return true;
                case MotionEvent.ACTION_MOVE:
                    if (!isDown) {
                        return false;
                    }
                    dy = event.getRawY() - startY;

                    Log.d(tag,"ontouchEvent: dy " + dy);
                    if (dy < 0) {
                         //canSwipe = false;
                    }
                    else {
                        onDrag(dy);
                    }

                    break;
                case MotionEvent.ACTION_UP:
                    if (!isDown) {
                        return false;
                    }
                    isDown = false;
                    canSwipe = false;

                    if (canBerefreshed) {
                        canBerefreshed = false;
                        onDrop();
                    }
                    break;
            }
            return true;
        }
    }
@H_419_13@

以及委托给自定义视图的 RecyclerVIEw 逻辑:

            @OverrIDe
            public voID onScrolled(@NonNull RecyclerVIEw recyclerVIEw,int dx,int dy) {
                super.onScrolled(recyclerVIEw,dx,dy);

                if (dy < 0) {
                    if (layoutManager.findFirstVisibleItemposition() != 0) {
                        swiperefreshVIEw.setCanSwipe(false);
                    }
                    // reached top,recycler delegate but need to touch again
                    else {
                        swiperefreshVIEw.setCanSwipe(true);
                    }
                }
                // scroll down
                else {
                    swiperefreshVIEw.setCanSwipe(false);
                }
            }
        });
@H_419_13@

问题:

如果回收器视图到达顶部,则 canSwipe 为真,则父级处理触摸事件。

在自定义视图中,在 ACTION_MOVE 上,我知道 dy

我尝试在这种情况下将 canSwipe 设置为 false,这将完全停止触摸,而是将其委托给 在同一触摸事件上。 我也尝试使用 requestdisallowIntercepttouchEvent() 但没有结果。

如何委派触摸同一事件?接受任何不同的解决方法!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

大佬总结

以上是大佬教程为你收集整理的自定义 SwipeToRefresh 移动 RecyclerView Android 嵌套滚动全部内容,希望文章能够帮你解决自定义 SwipeToRefresh 移动 RecyclerView Android 嵌套滚动所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。