前言
Android的事件分发(dispatchTouchEvent),拦截(onInterceptTouchEvent)与处理(onTouchEvent)
一、Listview与scrollview 冲突情景
- 如图 : 整体用srollview包裹,上面带图片的是listview 下面是一个内容足够多的TextView。
- 冲突情况:当滑动listview整体一块儿滑动,也就是说滑动的是scrollview而不是listview,即,滑动事件被scrollview拦截了,没有被传到listview

示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
二、如何解决冲突:
重写scrollview的onInterceptTouchEvent方法
代码如下:
public class scrollview extends ScrollView {
public scrollview(Context context) {
super(context);
}
public scrollview(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return super.onInterceptTouchEvent(ev);
}
}
将 return super.onInterceptTouchEvent(ev);改为return false 这样scrollview不拦截滑动事件,使listview能接收到滑动事件。
改完代码如下:
public class scrollview extends ScrollView {
public scrollview(Context context) {
super(context);
}
public scrollview(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return true;
}
}