Создает ли родительский клик, чтобы все дочерние элементы были интерактивными?

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

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

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

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

Ответ 1

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

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