2012-09-05 21 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