Делает ли родительский кликабельность все дочерние элементы кликабельными? - PullRequest
19 голосов
/ 15 ноября 2011

Существует LinearLayout с большим количеством дочерних элементов. Когда пользователь касается любого из этих дочерних элементов, будет вызван тот же метод. Чтобы не реализовывать один и тот же onClickListener для каждого элемента, я реализовал onClickListener для родительского LinearLayout ONLY .

Теперь, когда я щелкаю в любом месте в пределах границ родительского макета, нужный метод вызывается так же, как я реализовал слушатель для всех дочерних элементов.

В: Могу ли я рассчитывать, что каждый раз, когда я реализую onClickListener для родителя, все его дочерние элементы будут реагировать на событие click?

В: Что произойдет, если у любого дочернего элемента будет свой onClickListener? Произойдет ли столкновение или нажатие на этот элемент вызовет только собственное событие щелчка?

1 Ответ

29 голосов
/ 15 ноября 2011

Вы ответили на свой первый вопрос вторым вопросом.ClickEvent будет доставлен в самый нижний дочерний элемент в иерархии макета.Если этот элемент не имеет поведения onClick, он будет передавать событие своему родителю, пока событие не будет обработано.

Поэтому вы можете рассматривать LinearLayout как один отдельный блок для поведения onClick.Если вы создаете еще один интерактивный элемент внутри макета, убедитесь, что он достаточно большой, чтобы уменьшить вероятность того, что пользователь пропустит нужный элемент.

...