Android 中最外面有一个滚动,里面有一个小滚动,如何避免两个滚动冲突?
发布网友
发布时间:2022-09-16 06:19
我来回答
共1个回答
热心网友
时间:2023-10-12 09:46
需要去重写Android的touch事件分发,这里我给你个思路,你看看。
当TouchEvent发生时,首先Activity将TouchEvent传递给最顶层的View,TouchEvent最先到达最顶层View的dispatchTouchEvent,然后由dispatchTouchEvent方法进行分发。
如果dispatchTouchEvent返回true,则交给这个view的onTouchEvent处理;如果返回false,则交给这个view的interceptTouchEvent方法来决定是否要拦截这个事件。
如果interceptTouchEvent返回true,也就是拦截了,则交给它的onTouchEvent来处理,如果interceptTouchEvent返回false,则传递给子view,由子view的dispatchTouchEvent再开始这个事件分发。
如果事件传递到某一层的子view的onTouchEvent上了,这个方法返回了false,则表明该onTouchEvent未处理完毕,那么这个事件会从这个view往上传递,都是onTouchEvent来接收。而如果传递到最上面的onTouchEvent也返回false的话,这个事件就好消失,而且接收不到下一次事件。
如果onTouchEvent返回true,则事件处理完毕,不会传递。