Android: ¿Por qué long click también activa un click normal?


Tengo una vista de lista con oyentes para un clic largo y un clic regular.

¿Por qué, cuando presiono un elemento de la lista, también se llama al evento de clic regular?

Necesito tener dos funciones separadas para los diferentes clics.

Author: mellowg, 2011-03-25

3 answers

De Oyentes de eventos :

OnLongClick () - Esto devuelve un booleano para indicar si ha consumido el evento y no debe continuar. Es decir, devuelva true para indicar que ha manejado el evento y debe detenerse aquí; devuelva false si no lo ha manejado y/o el evento debe continuar a cualquier otro oyente al hacer clic.

¿Está regresando true desde su onLongClick() y aún obtiene el clic normal el evento?

Editado para agregar: Para una vista de lista, puede estar usando OnItemLongClickListener. Las onItemLongClick() utiliza un valor de retorno booleano similar para indicar si consumió el evento.

 231
Author: erichamion,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-25 03:41:12

Replanteando la respuesta en términos más simples:

Dado:

@Override
public boolean onLongClick(View view) {

    return true; // or false
}
  • return true significa que el evento se consume. Está manejado. No se notificarán otros eventos de clic.
  • return false significa que el evento no se consume. Cualquier otro evento de clic seguirá recibiendo notificaciones.

Así que si no quieres que onClick también se active después de un onLongClick, entonces deberías return true desde el evento onLongClick.

 25
Author: Suragch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-29 06:50:35

Asegúrese de que está sobreescribiendo OnClickListener para su método onClick. También asegúrese de que está sobreescribiendo OnLongClickListener para su método onLongClick. Y asegúrese de que su método onLongClick devuelve true, ya que esto consumirá el onClick.

 14
Author: Alex Lockwood,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-06-26 13:04:08