2011-11-15 12 views
17

C'è un LinearLayout con molti elementi figlio. Quando un utente tocca uno di questi elementi figlio, verrà invocato lo stesso metodo. Per non implementare lo stesso onClickListener per ciascun elemento, ho implementato lo onClickListener per il LinearLayout principale SOLO.Il fare clic su genitore rende anche tutti gli elementi figlio cliccabili?

Ora, quando faccio clic in qualsiasi punto all'interno dei bordi del layout principale, viene invocato il metodo desiderato proprio come ho implementato il listener per tutti gli elementi figlio.

D: Posso fare affidamento sul fatto che ogni volta che implemento onClickListener per il genitore, tutti i suoi elementi figlio reagiranno all'evento click?

Q: Cosa accadrebbe se un elemento figlio avesse il proprio onClickListener? Ci sarebbe una collisione o facendo clic su quell'elemento avrebbe generato solo il proprio evento click?

+1

si suppone che il layout premuto si propaga a tutti i suoi figli –

risposta

28

Hai risposto alla tua prima domanda con la tua seconda domanda. Un clickEvent verrà consegnato all'elemento figlio inferiore nella gerarchia di layout. Se questo elemento non ha un comportamento onClick, passerà l'evento al suo genitore fino a quando l'evento viene gestito.

Pertanto è possibile considerare LinearLayout come un unico blocco per il proprio comportamento onClick. Se crei un altro elemento cliccabile all'interno del layout, assicurati di renderlo abbastanza grande da ridurre la possibilità che l'utente manchi l'elemento corretto.

Problemi correlati