当前位置: 首页 > 知识库问答 >
问题:

使用向左/右行滑动的Recyclerview

曾珂
2023-03-14

我有viewpager和tablayout,内部viewpager有一个创建RecolyerView片段,

在RecyclerVIew roe项目中,我创建了一个水平滚动视图,用于向左/向右移动,

基本上,我只想滑动屏幕的75%左右,然后显示可滑动视图,

我还使用了recyclerviewItemTouchHelper,但它会刷行(100%刷行),

但所有这些都不能正常工作,因为当我们在recyclerview项上滑动时,有时触摸到ViewPager,因此页面被滑动,我不希望这样,

因此我使用了HorizontalScrollView,但问题是我无法检测HorizontalScrollView的touch listner内的滑动方向,

实际上,如果在horizontalscrollview上滚动,我们希望自动滚动一定的量,

holder.scrollContainer.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {

                int scroll1st = 0;
                int scroll2nd = 0;

                if(event.getAction() == MotionEvent.ACTION_DOWN){
                    scroll1st = holder.scrollContainer.getScrollX();
                    Log.d("SCROLL", "Scroll down callded: amt is: " + holder.scrollContainer.getScrollX() );
                    mDataSet.get(position).isFirstSwipe = false;
                } else if (event.getAction() == MotionEvent.ACTION_UP){
                    scroll2nd = holder.scrollContainer.getScrollX();
                    Log.d("SCROLL", "Scroll up callded: amt is: " + holder.scrollContainer.getScrollX() );
                }

                Log.d("SCROLL", "max scroll amount: " + holder.scrollContainer.getMaxScrollAmount());

                if(event.getAction() == MotionEvent.ACTION_UP){

                    if(scroll2nd > scroll1st && (scroll2nd - scroll1st ) > 50 ){
                        holder.scrollContainer.postDelayed(new Runnable() {
                            public void run() {
                                holder.scrollContainer.fullScroll(HorizontalScrollView.FOCUS_RIGHT);
                            }
                        }, 100L);
                        mDataSet.get(position).isFirstSwipe = true;
                    } else if (scroll1st > scroll2nd && (scroll1st - scroll2nd ) > 50){
                        holder.scrollContainer.postDelayed(new Runnable() {
                            public void run() {
                                holder.scrollContainer.fullScroll(HorizontalScrollView.FOCUS_LEFT);
                            }
                        }, 100L);
                        mDataSet.get(position).isFirstSwipe = true;
                    }
    }
                v.onTouchEvent(event);
                return true;
            }
        });

基本上action.down事件不是每次都调用,所以不能不派生滑动方向

共有1个答案

万俟穆冉
2023-03-14

确保recyclerView正在将事件传递给滚动容器。

OnTouchListener添加到RecyclerView并将事件传递给您的ScrollView

 类似资料:
  • 问题内容: 我所看到的和jQuery的。左右滑动的功能/方式如何? 问题答案: 您可以使用jQueryUI中的其他效果来执行此操作: 快速示例:

  • 问题内容: 我想做的只是为移动设备添加左/右触摸滑动功能。我怎样才能做到这一点? 另外,如何使显示在悬停时的上一个/下一个按钮变小,以用于移动/ ipad版本? 谢谢 问题答案: 更新: 当我刚接触Web设计时,我想到了此解决方案。既然我年纪大一些又聪明了, 马克·希尔拉迪 ( Mark Shiraldi) 给出的答案似乎是一个更好的选择。参见下一个最佳答案;这是一个更有效率的解决方案。 我最近参

  • 本文向大家介绍jQuery控制的不同方向的滑动(向左、向右滑动等),包括了jQuery控制的不同方向的滑动(向左、向右滑动等)的使用技巧和注意事项,需要的朋友参考一下 引入jquery.js,复制以下代码,即可运行。 1、slidetoggle() 交替slidedown(),slideup() Html代码 Js代码 2、左侧横向交替滑动 Animate Left Html代码 Js代码 3、左

  • 我搜索了一些滑动示例, 但我仍然找不到从右向左滑动的例子。 请任何一个给样品项目滑动菜单从右到左

  • 我试图将一个视图从右向左滑动,点击一个按钮,它的可见性就消失了,点击另一个按钮,它的可见性就消失了。我尝试了以下解决方案。但是它要求视图是可见的,并且它会将视图从一个位置滑动到另一个位置。我想要一个滑动效果,就像那样,但是要有。我怎样才能做到这一点?

  • 我正在尝试为我的RecolyerView添加滑动功能。我正在跟随这个链接添加刷卡。https://github.com/nikhilpanju/recyclerviewenhanced/blob/master/recyclerviewenhanced/src/main/java/com/nikhilpanju/recyclerviewenhanced/recyclertouchlistener.j