2012-09-05 31 views
4

我在我的應用程序中有一個ViewPager,我想在任何時候禁用/允許滑動到右側。 viewpager中的每個視圖都包含ListView。我怎樣才能做到這一點?我試圖做的,以這種方式:單側ViewPager只掃動

private int oldX; 
private int deltaX = 0; 

@Override 
public boolean onTouch(View view, MotionEvent motionEvent) { 
    if (motionEvent.getAction() == MotionEvent.ACTION_MOVE || motionEvent.getAction() == MotionEvent.ACTION_DOWN) { 
     int newX = (int) motionEvent.getX(); 
     deltaX = oldX - newX; 
     oldX = newX; 
    } 
    if (motionEvent.getAction() == MotionEvent.ACTION_UP) { 
     oldX = 0; 
    } 
    return deltaX < 0;   
} 

但鑑於還是要去右側一點點。任何人都在解決同樣的問題?

回答

12

我能夠利用其代碼到我的應用程序,並增加了實現ViewPager一側滾動以下

private boolean performDrag(float x) { 
    boolean needsInvalidate = false; 

    final float deltaX = mLastMotionX - x; 
    mLastMotionX = x; 

    // MY CODE STARTS 
    if (deltaX < 0) { 
     return false; 
    } 
    // MY CODE ENDS 

    float oldScrollX = getScrollX(); 
    ... 

這似乎很好地工作。您可能需要的唯一一件事情 - 請輸入適配器代碼或提供您自己的適配器,因爲其代碼中使用的某些方法在PagerAdapter中不公開。

+1

非常感謝。有用!我參加了一整堂課,並將其用於我的項目。 –

+0

@sandrstar,我試着將ViewPager和PagerAdapter類複製到我的應用程序。但是在構建我的應用程序時出現「Unable to convert to dalvik format」錯誤。我應該在將這些類複製到我的項目後重命名這些類嗎?我應該使用什麼包名? –

+1

使用您的應用程序包。而且,是的,您可以重命名它們,只是不要忘記在佈局文件中進行適當的更改。 – sandrstar