我在网上看到大多数专家讲解的都是设置setOnScrollListener滑动监听,但是个人感觉设置滑动监听比较麻烦,感觉使用事件分发来做比较简单;
实现思路:首先来线下整体布局,是使用一个横向的线性布局里面放了两个ListView,使用权重让两个ListView平分屏幕的宽。
如果想使用View的事件分发,必须自定义这个View,这里面实现起来也非常简单,只是自定义一个线性布局继承系统的线性布局;
我这里面使用的是线性布局,实际项目中使用什么布局都可以,这里面只是方便两个ListView设置权重;
实现自定义布局在这个类中重写onInterceptTouchEvent();作用就是把事件中断掉,不让ListView得到事件;
/**
* 判断是否需要中断事件的传递
* 默认返回false 意思是,不中断
* 返回true 意思是,中断
*/
public boolean onInterceptTouchEvent(MotionEvent ev) {
return true;
}
如果只写这个方法运行结果是两个ListView跟进没办法滑动,下面还需要重写onTouchEvent()方法,在这个方法中把事件同时交给两个ListView,作用就是当你滑动的时候两个ListView都能收到滑动事件;
public boolean onTouchEvent(MotionEvent event) {
//获得listview的个数
int count=getChildCount();
for (int i = 0; i < count; i++) {
View child = getChildAt(i);
try {
child.dispatchTouchEvent(event);
} catch (Exception e) {
e.printStackTrace();
}
}
return true;
}
好了,只需要两个方法,十行代码搞定,所以感觉比设置滑动监听要简单;