簡體   English   中英

子項在父視圖之外不可點擊

[英]Children not clickable outside parent view

我創建了一個帶有標記的地圖視圖。 看下面這張圖:
Grandparent是一個填充視圖
Parent是我的 MarkerView
Child是一個可點擊的標記

父母有 clipChildren(false),因此孩子是可見的。

我的問題是孩子是可點擊的,除了Child 2Parent之外的部分。 Parent也有適當的TouchDelegate (我也為孩子們嘗試過)。

如何使完整的孩子可點擊?

在此處輸入圖像描述

我有一個類似的問題,並通過設置app:elevation="XXdp"給孩子修復它。

如果不改變元素,我就無法工作。
我最終擴大了父級並使用setTranslationY作為標記,使它們保持原樣,如下所示:

解

您不能這樣做的原因是ViewGroup#dispatchTouchEvent(MotionEvent ev)的默認實現會遍歷子代(而不是孫代)以查找作為目標的子代(位於單擊事件點的底部)並且可以接收觸摸事件。 如果你觸摸它在Parent范圍之外的部分,它是Grandparent的唯一孩子,它什么也找不到。 如果它沒有找到ParentParent將永遠無法查找其子項( Children 1 and Children 2 )並最終將事件發送給Child 2

因此,您要么增加Parent的大小(作為可接受的答案),這是最簡單的方法,要么您必須覆蓋GrandparentViewGroup#dispatchTouchEvent(MotionEvent ev)方法以進行更復雜的查找,例如查找孫子也是。 該方法已經相當復雜,如果有人找到實現,請分享,因為我沒有。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM