我希望用户无法在viewpager小部件中滑动到某些位置。因为我希望他们通过按钮按去那里我做一些背景工作。例如,对于位置0和3,我不希望他们通过滑动去那里。那怎么办呢?
这是我的自定义视图寻呼机
public class SmoothViewPager extends ViewPager{
public SmoothViewPager(Context context) {
super(context);
}
public SmoothViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
/* @Override
public boolean onInterceptTouchEvent(MotionEvent event) {
// Never allow swiping to switch between pages
return false;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
// Never allow swiping to switch between pages
return false;
}*/
@Override
void smoothScrollTo(int x, int y, int velocity) {
super.smoothScrollTo(x, y, 1);
}
}
答案 0 :(得分:0)
将上述ViewPager
代码修改为如下
public class SmoothViewPager extends ViewPager {
private boolean mAllowScroll = true;
public SmoothViewPager(Context context) {
super(context);
}
public SmoothViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent event) {
return mAllowScroll;
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return mAllowScroll;
}
public void setScroll(boolean allowScroll) {
mAllowScroll = allowScroll;
}
}
这里我们使用布尔值mAllowScroll
来切换是否允许滚动之间的状态。从OnPageChangeListener()
的onPageSelected()
方法调用setScroll()
方法。根据用户所在的页码切换布尔值。