在某些时候我们需要禁止ViewPager滑动,最简单的方法就是拦截ViewPager的相关事件:
1.触屏滑动,直接拦截触屏事件就可以了
@Override
public boolean onTouchEvent(MotionEvent ev) {
if (!isCanScroll) {
return true;
} else {
return super.onTouchEvent(ev);
}
}
2.按键滑动,也就是外置设备,如遥控器、键盘等
@Override
public boolean dispatchKeyEvent(KeyEvent event)
{
// TODO Auto-generated method stub
switch (event.getKeyCode())
{
case KeyEvent.KEYCODE_DPAD_DOWN://按向下键
if(!isCanScroll)
{
onViewPagerListener.onkeyDown();
return false;
}
case KeyEvent.KEYCODE_DPAD_UP:
if(!isCanScroll)
{
onViewPagerListener.onkeyUp();
return false;
}
case KeyEvent.KEYCODE_DPAD_LEFT:
if(!isCanScroll)
{
onViewPagerListener.onKeyLeft();
return false;
}
case KeyEvent.KEYCODE_DPAD_RIGHT:
if(!isCanScroll)
{
onViewPagerListener.onkeyRight();
return false;
}
}
return super.dispatchKeyEvent(event);
}
onViewPagerListener是一个回调接口,因为在ViewPager里面拦截了这些事件,所以在activity中无法获得onkey事件,只有通过回调获得;