前言
Android的事件分发(dispatchTouchEvent),拦截(onInterceptTouchEvent)与处理(onTouchEvent)
一、Listview与scrollview 冲突情景
- 如图 : 整体用srollview包裹,上面带图片的是listview 下面是一个内容足够多的TextView。
- 冲突情况:当滑动listview整体一块儿滑动,也就是说滑动的是scrollview而不是listview,即,滑动事件被scrollview拦截了,没有被传到listview
![](https://img-blog.csdnimg.cn/20210114201826392.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzkxODM0Mg==,size_16,color_FFFFFF,t_70)
示例: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;
}
}