我的应用程序中有一个ViewPager,我想在任何时候禁用/允许滑动到右侧。 viewpager中的每个视图都包含ListView。我怎样才能做到这一点?我试图用这种方式做到这一点:
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;
}
但观点仍然偏向右侧。有人在解决同样的问题吗?
答案 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();
...
似乎工作正常。您可能需要的唯一东西 - 获取适配器代码或提供您自己的适配器,因为ViewPager
中的某些PagerAdapter
方法在其代码中使用的方法不公开。