这两天写了一个自定义滑动翻页,类似主页切换效果的组件。
动态加载到组件中的包含Button,Checkbox,ImageButton,这些组件都绑定OnClickListener。
在TextView组件和空白处滑动时,可以切换页面,一旦在Button,CheckBox等上面滑动时,就无法执行切换页面了。
这让我很郁闷。Google+百度了很久,了解Android的Touch事件处理流程。终于得到解决方法:
自执行,再派发。
以下代码是我组件的代码,Override了onInterceptTouchEvent的方法。关键是先执行了本类的TouchEvent处理,再分派给子View。
mIsTouched 和 mIsDragging 通过GestureDetector判断,不在此讨论。
特记录下来,希望给遇到同样问题的人一个解决思路。
动态加载到组件中的包含Button,Checkbox,ImageButton,这些组件都绑定OnClickListener。
在TextView组件和空白处滑动时,可以切换页面,一旦在Button,CheckBox等上面滑动时,就无法执行切换页面了。
这让我很郁闷。Google+百度了很久,了解Android的Touch事件处理流程。终于得到解决方法:
自执行,再派发。
以下代码是我组件的代码,Override了onInterceptTouchEvent的方法。关键是先执行了本类的TouchEvent处理,再分派给子View。
@Override
public boolean onInterceptTouchEvent(MotionEvent ev){
if(mIsTouched && mIsDragging){
return true;
}else{
//这是我组件的处理TouchEvent的方法
onFlipperTouchEvent(ev);
//释放TouchEvent
return super.onInterceptTouchEvent(ev);
}
}
mIsTouched 和 mIsDragging 通过GestureDetector判断,不在此讨论。
特记录下来,希望给遇到同样问题的人一个解决思路。