2014-03-31 60 views
0

我有一個包含3個片段的垂直ViewPager實現。在中間和底部的片段中,我添加了另一個正常的ViewPagers。到目前爲止,一切正常,即滑動左/右觸發器水平ViewPager頁面更改和向上/向下滑動觸發垂直ViewPager頁面更改。現在我需要進行更改,以便在ViewPager中間向左/向右滑動應該也會觸發底部ViewPager上的左/右滑動,並反過來。將ViewPager的滾動參數複製到另一個ViewPager中同時滾動

我需要在這裏傳遞滾動功能的參數,以便根據用戶與觸摸熨平板的交互進行轉換。我已經看到「viewPager3.setCurrentItem(position)」會在ViewPagers中引起滾動的突然觸發。我需要這樣的情況,即用戶真的很慢地改變頁面或者再次返回到同一頁面。

回答

0

你可以做這樣的事情:

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

感謝羅馬。這似乎是一個好主意,因爲onTouchEvent(event)在任何其他事件之前被觸發。但是我已經處理了ViewPager的OnPageChangeListener()中的頁面更改。假設我先處理觸摸,那麼如何傳遞給OnPageChangeListener()?我希望我很清楚:D – neaGaze

+0

如果onTouch返回false,則也會處理其他事件 –

+0

謝謝。我已經試過你的方式,但得到了與上述無關的其他問題。我會解決這些錯誤並將問題標記爲已解決。 :D – neaGaze

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); 
     } 
    } 
});