繁体   English   中英

多个 ViewPager 触摸事件

[英]Multiple ViewPager Touch Event

我在一个 Activity 中有 2 个 ViewPager,我希望它们在我滑动其中任何一个时同步移动。

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

以下是我的 On Touch 事件代码:

    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 时,Viewpager 1 不会移动。

需要帮忙。 提前致谢。

使用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) {

        }
    });

用户在ViewPager滑动时,需要使用addOnPageChangeListenerViewPager处理事件

addOnPageChangeListener(ViewPager.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) {

        }
    });

添加自定义 onTouch 逻辑的正确方法是调用

viewPager2.getChildAt(viewPager2.getCurrentItem()).setOnTouchListener(...)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM