2011-11-15 30 views
17

Hay un LinearLayout con muchos elementos secundarios. Cuando un usuario toca cualquiera de esos elementos secundarios, se invocará el mismo método. Para no implementar el mismo onClickListener para cada elemento, implementé el onClickListener para el LinearLayout principal SOLAMENTE.¿Al hacer clic en el elemento principal, también se puede hacer clic en el elemento secundario?

Ahora, cuando hago clic en cualquier lugar dentro de los bordes del diseño principal, se invoca el método deseado al igual que he implementado el oyente para todos los elementos secundarios.

P: ¿Puedo confiar en que siempre que implemente onClickListener para el elemento primario, todos sus elementos secundarios reaccionarán al evento click?

P: ¿Qué pasaría si algún elemento secundario tiene su propio onClickListener? ¿Habría una colisión o al hacer clic en ese elemento se dispararía su propio evento de clic solamente?

+1

se supone que la distribución presionada se propaga a todos sus hijos –

Respuesta

28

Respondió su primera pregunta con su segunda pregunta. Un evento clickEvent se entregará al elemento secundario más bajo en la jerarquía de diseño. Si este elemento no tiene un comportamiento onClick, pasará el evento a su padre hasta que se maneje el evento.

Por lo tanto, puede tratar el LinearLayout como un solo bloque para su comportamiento onClick. Si crea otro elemento seleccionable dentro del diseño, asegúrese de hacerlo lo suficientemente grande para reducir la posibilidad de que el usuario pierda el elemento correcto.

Cuestiones relacionadas