我有一个viewPager,可滑动5个或更多页面。一些页面包含表单输入字段。根据输入值,可以启用或禁用滑动。 例如:如果页面包含复选框,并且必须选中此字段。如果仅选中该选项,则滑动应该可以,否则将停留在同一页面上。
答案 0 :(得分:1)
您可以扩展viewpager类以创建自定义viewpager实现。在该类中,您需要根据需要返回“ true”或“ false”来覆盖“ canScrollHorizontally”方法
public class LockableViewPager extends ViewPager {
private boolean swipeLocked;
public LockableViewPager(Context context) {
super(context);
}
public LockableViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
public boolean getSwipeLocked() {
return swipeLocked;
}
public void setSwipeLocked(boolean swipeLocked) {
this.swipeLocked = swipeLocked;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return !swipeLocked && super.onTouchEvent(event);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return !swipeLocked && super.onInterceptTouchEvent(event);
}
@Override
public boolean canScrollHorizontally(int direction) {
//control this method based on your logic
return !swipeLocked && super.canScrollHorizontally(direction);
}
}