有关 给Layout设置监听事件后,与Layout子控件的响应关系
生活随笔
收集整理的這篇文章主要介紹了
有关 给Layout设置监听事件后,与Layout子控件的响应关系
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
如果你的linearlayout中的孩子們都監(jiān)聽了click事件了,linearlayout是拿不到事件的。
在Android系統(tǒng)的中,硬件觸發(fā)的事件最開始是Activity拿到的,然后它向里面的View一級級的dispatch,所以最里層的view最后拿到了事件,而它又沒有孩子了,它就開始處理了(也就是響應(yīng)事件)。在孩子的事件處理函數(shù)中,如果返回了false,它的父容器還是能再次拿到了事件的。如果返回了true,也就是告訴它的父容器,這事我管了,你就別過問了。
linearlayout的孩子們估計都有自己的Click事件處理函數(shù)了吧?
Click事件其實一種封裝的事件,而不是我說的“硬件觸發(fā)的事件”,“硬件觸發(fā)的事件”指的是MouseUp,?MouseDown,MouseMove和MouseCancel。View類中對于Click事件默認(rèn)都是采取返回了false。所以你的linearlayout是拿不到事件的,因為它的孩子已經(jīng)處理過了。
但是有一種解決方案:你可以重寫linearlayout的onInterceptTouchEvent()方法,它會在事件傳給孩子之前被調(diào)用
在Android系統(tǒng)的中,硬件觸發(fā)的事件最開始是Activity拿到的,然后它向里面的View一級級的dispatch,所以最里層的view最后拿到了事件,而它又沒有孩子了,它就開始處理了(也就是響應(yīng)事件)。在孩子的事件處理函數(shù)中,如果返回了false,它的父容器還是能再次拿到了事件的。如果返回了true,也就是告訴它的父容器,這事我管了,你就別過問了。
linearlayout的孩子們估計都有自己的Click事件處理函數(shù)了吧?
Click事件其實一種封裝的事件,而不是我說的“硬件觸發(fā)的事件”,“硬件觸發(fā)的事件”指的是MouseUp,?MouseDown,MouseMove和MouseCancel。View類中對于Click事件默認(rèn)都是采取返回了false。所以你的linearlayout是拿不到事件的,因為它的孩子已經(jīng)處理過了。
但是有一種解決方案:你可以重寫linearlayout的onInterceptTouchEvent()方法,它會在事件傳給孩子之前被調(diào)用
總結(jié)
以上是生活随笔為你收集整理的有关 给Layout设置监听事件后,与Layout子控件的响应关系的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用Javascript获取页面元素的位置
- 下一篇: 短程调度 中程调度 长程调度