您肯定要创建自己的自定义ViewPager子类.我创建了一个称为CustomSwipePager的简单自定义ViewPager,它将在需要时处理阻止用户交互的问题.
public class CustomSwipeViewPager extends ViewPager {
private boolean mLastPageEnabled = false;
private int mLastPageIndex = 0;
public NoSwipeViewPager(Context context) {
super(context);
}
public NoSwipeViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
public void setLastPageEnabled(boolean enabled) {
mLastPageEnabled = enabled;
}
public void setLastPageIndex(int index) {
mLastPageIndex = index;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event){
if(!mLastPageEnabled && getCurrentItem() >= (mLastPageIndex - 1)) {
// Always return false to disable user swipes
return false;
}
return true;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (!mLastPageEnabled && getCurrentItem() >= (mLastPageIndex - 1)) {
// Always return false to disable user swipes
return false;
}
return true;
}
}
您将要在类setLastPageEnabled()和setLastPageIndex()中利用两种关键方法.您可以将最后一页索引设置为所需的任意值(如果有三种情况),可以将其设置为2.然后还可以使用setLastPageEnabled(false)禁用滑动或使用setLastPageEnabled(true)重新启用.
您可以像这样将自定义视图包括到布局中:
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/custom_swipe_view_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
最后在适当位置的片段或活动中引用它:
private CustomSwipeViewPager mPager;
@Override
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mPager = (CustomSwipeViewPager) findViewById(R.id.custom_swipe_view_pager);
mPager.setLastPageEnabled(false);
mPager.setLastPageIndex(2);
}