【问题标题】:copy the scrolling parameters of ViewPager into another ViewPager for simultaneous scroll将 ViewPager 的滚动参数复制到另一个 ViewPager 中进行同时滚动
【发布时间】:2014-03-31 11:49:21
【问题描述】:

我有一个包含 3 个片段的垂直 ViewPager 实现。在中间和底部的片段中,我添加了另一个普通的 ViewPagers。到目前为止,一切正常,即向左/向右滑动触发水平 ViewPager 页面更改,向上/向下滑动触发垂直 ViewPager 页面更改。现在我需要进行更改,以便在中间 ViewPager 上向左/向右滑动也应该在底部 ViewPager 上向左/向右滑动,反之亦然。

我需要在这里传递滚动功能的参数,以便根据用户与触摸屏的交互发生过渡。我已经看到“viewPager3.setCurrentItem(position)”会导致 ViewPagers 中的滚动突然触发。我需要用户更改页面非常缓慢或再次返回同一页面的情况。

【问题讨论】:

    标签: android android-viewpager


    【解决方案1】:

    尝试这样的解决方案:

    mFirstViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
            mSecondViewPager.scrollTo(mFirstViewPager.getScrollX(), 0);
        }
    
        @Override
        public void onPageSelected(int position) {}
    
        @Override
        public void onPageScrollStateChanged(int state) {
            if (state == ViewPager.SCROLL_STATE_IDLE) {
                mSecondViewPager.setCurrentItem(mFirstViewPager.getCurrentItem(), false);
            }
        }
    });
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

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

      【讨论】:

      • 谢谢罗曼。这似乎是个好主意,因为 onTouchEvent(event) 在任何其他事件之前触发。但是我已经处理了 ViewPager 的 OnPageChangeListener() 中的页面更改。假设我先处理触摸,那么如何传递给 OnPageChangeListener() ?我希望我很清楚:D
      • 如果 onTouch 返回 false 也会处理其他事件
      • 谢谢。我已经尝试过您的方法,但遇到了与上述无关的其他问题。我将修复这些错误并将问题标记为已解决。 :D
      • 我已经看到上述方法不起作用。我在两个侦听器即 viewpager1 和 viewpager2 中打印了 onTouchEvent(event) 的值。但只打印第一个值。例如:如果我滚动最后一页,则只会显示该页面中的事件,而不显示我们明确调用的另一个事件。谢谢!!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多