场景:
在实际开发中你可能需要把ListView中的onTouchEvent写在Activity中进行操作,或者是同时存在对ListView或者Activity的不同向操作(例如向左右向上下滑动绑定不同事件)。
问题:
这时候你会发现ListView的onTouchEvent事件有效,但是Activity的onTouchEvent事件却失效,这是为什么呢?
解决与分析:
这是因为ListView是的onTouchEvent 优先权高于Activity的,前者把后者覆盖了,于是造成Activity onTouchEvent失效。
这时候我们查看API以及翻阅网上资料,发现Activity提供另外一个方法的重写。
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
return super.dispatchTouchEvent(event);
}
这时候我们只需要把相关的操作写在这里,ctrl+F11 ,你会发现焦点不冲突啦~
Q:
于是我们就要想想为什么Google要给Activity提供onTouchEvent这样一个鸡肋的属性...坐等大神解答..