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