一、簡介:
有時項(xiàng)目中會有這樣的需求:在ViewPager的里面再嵌入ViewPager驴一,那么就有沖突了踊淳,簡單粗暴的方法就是直接把一個ViewPager禁止滑動。
注意:禁止滑動的同時不能禁止 setCurrentItem 方法镶苞。
實(shí)現(xiàn)思路:重寫ViewPager喳坠,覆蓋 onTouchEvent 和 onInterceptTouchEvent 方法,使其返回false茂蚓,這樣就等于禁止了ViewPager上的滑動事件壕鹉。
二剃幌、NoScrollViewPager
/**
* "禁止ViewPager滑動"的輔助類
*/
public class NoScrollViewPager extends ViewPager {
private boolean noScroll = false;
public NoScrollViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
public NoScrollViewPager(Context context) {
super(context);
}
/**
* 供外部調(diào)用的方法:設(shè)置是否可以滑動
* @param noScroll true:表示禁止滑動,false:表示可以滑動
*/
public void setNoScroll(boolean noScroll) {
this.noScroll = noScroll;
}
@Override
public void scrollTo(int x, int y) {
super.scrollTo(x, y);
}
@Override
public boolean onTouchEvent(MotionEvent arg0) {
/* return false;//super.onTouchEvent(arg0); */
if (noScroll)
return false;
else
return super.onTouchEvent(arg0);
}
/**
* 返回true:表示攔截
* 返回false:表示不攔截
* @param arg0
* @return
*/
@Override
public boolean onInterceptTouchEvent(MotionEvent arg0) {
if (noScroll)
return false;
else
return super.onInterceptTouchEvent(arg0);
}
@Override
public void setCurrentItem(int item, boolean smoothScroll) {
super.setCurrentItem(item, smoothScroll);
}
@Override
public void setCurrentItem(int item) {
super.setCurrentItem(item);
}
}
如果你想更簡單一點(diǎn)晾浴,這樣负乡,簡單,粗暴
/**
* 不可以滑動脊凰,但是可以setCurrentItem的ViewPager抖棘。
*/
public class NoScrollViewPager extends ViewPager {
public NoScrollViewPager(Context context) {
super(context);
}
public NoScrollViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onTouchEvent(MotionEvent arg0) {
return false;
}
@Override
public boolean onInterceptTouchEvent(MotionEvent arg0) {
return false;
}
}