代码之家  ›  专栏  ›  技术社区  ›  Dinesh Singh

多个ViewPager触摸事件

  •  0
  • Dinesh Singh  · 技术社区  · 8 年前

    我在一个活动中有两个ViewPagers,我希望当我滑动其中任何一个ViewPagers时,它们能够同步移动。

    例如,在右方向滑动Viewpager1时,Viewpager 2显示也向右移动。

    以下是我的触控事件代码:

        viewPager2.setOnTouchListener(new View.OnTouchListener() {
    
            @Override
            public boolean onTouch(View v, MotionEvent event) {
    
                viewPager1.onTouchEvent(event);
                return false;
    
            }
    
        });
    
    
        viewPager1.setOnTouchListener(new View.OnTouchListener() {
    
            @Override
            public boolean onTouch(View v, MotionEvent event) {
    
                viewPager2.onTouchEvent(event);
                return false;
    
            }
        });
    

    现在,代码仅在Viewpager1的情况下有效,即滑动Viewpager1时,ViewPager2也朝着相同的方向移动,但当我滑动ViewPager2时,Viewpager1不移动。

    需要帮助。提前谢谢。

    2 回复  |  直到 8 年前
        1
  •  1
  •   MichaelStoddart    8 年前

    使用 OnPageChangeListener :

    viewPager1.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    
            }
    
            @Override
            public void onPageSelected(int position) {
                viewPager2.setCurrentItem(position);
            }
    
            @Override
            public void onPageScrollStateChanged(int state) {
    
            }
        });
    
        viewPager2.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
    
            }
    
            @Override
            public void onPageSelected(int position) {
                viewPager1.setCurrentItem(position);
            }
    
            @Override
            public void onPageScrollStateChanged(int state) {
    
            }
        });
    
        2
  •  1
  •   Community Mohan Dere    6 年前

    你需要使用 addOnPageChangeListener 属于 ViewPager 当用户滑动时处理事件 ViewPager

    addOnPageChangeListener(ViewPager.OnPageChangeListener listener)

    viewPager1.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                    
            }
    
            @Override
            public void onPageSelected(int position) {
                viewPager2.setCurrentItem(position);
            }
    
            @Override
            public void onPageScrollStateChanged(int state) {
    
            }
        });
    
        viewPager2.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
                   
            }
    
            @Override
            public void onPageSelected(int position) {
               viewPager1.setCurrentItem(position);
            }
    
            @Override
            public void onPageScrollStateChanged(int state) {
    
            }
        });