- 场景如:TabHost滑动切换页面时有一个页面里面有个广告轮播图,这时或出现子控件没有滑动事件。
- 遇到这种情况,一般重写子viewpager中onTouchEvent(),这个方法主要用于事件的处理,当返回true表示消费处理当前事件,当返回false则不处理,交给子控件进行继续分发。
public class ChildViewPager extends ViewPager{
/** 触摸时按下的点 **/
private PointF downP = new PointF();
/** 触摸时当前的点 **/
private PointF curP = new PointF();
public ChildViewPager(Context context, AttributeSet attrs) {
super(context, attrs);
}
public ChildViewPager(Context context) {
super(context);
}
@Override
public boolean onTouchEvent(MotionEvent ev) {
switch (ev.getAction()) {
case MotionEvent.ACTION_DOWN:
......
downP.x = ev.getX();
downP.y = ev.getY();
getParent().requestDisallowInterceptTouchEvent(true);
break;
case MotionEvent.ACTION_MOVE:
......
getParent().requestDisallowInterceptTouchEvent(true);
break;
case MotionEvent.ACTION_UP:
......
getParent().requestDisallowInterceptTouchEvent(false);
if(downP.x==curP.x && downP.y==curP.y){
return true;
}
break;
}