将ViewPager的滚动参数复制到另一个ViewPager中以进行同步滚动

时间:2014-03-31 11:49:21

标签: android android-viewpager

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

我需要在此处传递Scroll功能的参数,以便根据用户与触摸式熨平板的交互进行转换。我已经看到" viewPager3.setCurrentItem(position)"导致ViewPagers中的Scroll突然触发。我需要用户非常慢地更改页面或再次返回同一页面的情况。

2 个答案:

答案 0 :(得分: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);
        }
    }
});

答案 1 :(得分:0)

你可以这样做:

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