android触摸事件透传,Android中父View穿透子View响应长按事件
釋放雙眼,帶上耳機,聽聽看~!
需求
在實際項目開發中,有這樣的需求,長按整個ViewGroup響應長按事件,例如長按彈出對話框或者popwindow等等
問題
針對這個需求出現兩種情況:
1,當ViewGroup中無任何子view的時候,長按事件按壓ViewGroup任何位置都可以響應.
2,當ViewGroup中有子view的時候,例如包含TextView,長按子view的時候,就無法響應ViewGroup的長按事件,長按子view以外的區域可以影響其長按事件.
顯然這樣是不符合我們的需求,那么如何解決此問題呢?
解決方案
1,給子view也添加長按事件,調用父view的長按邏輯
特點:這種方式可以實現,但是子view較多的情況下,需要添加較多長按事件,會增加代碼復雜度
2,給子view設置觸摸監聽,在回調方法抬起的時候,響應view的長按事件
特點:需要處理多個子view的觸摸監聽.
代碼示意:
tvContent.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
getViewGroup().performLongClick();
}
return false;
}
});
3,父view攔截長按事件,不讓他傳遞給子view.
4,更好的方案有待思考和研究,歡迎提供寶貴意見!!!
總結
以上是生活随笔為你收集整理的android触摸事件透传,Android中父View穿透子View响应长按事件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 设置 媒体服务器,第三讲
- 下一篇: android sina oauth2.