Realizar tanto el clic normal y clic largo en el botón

Tengo un solo botón nombrado como CheckIn. Tenga una mirada en mi código.

checkIn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(HomeSafeActivity.this, "Normal Press", Toast.LENGTH_LONG).show(); }); checkIn.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { Toast.makeText(HomeSafeActivity.this, "Long press", Toast.LENGTH_LONG).show(); return false; } }); 

Ahora, cuando presione el botón normal, el mensaje se mostrará como Normal. Cuando presione el botón, el mensaje mostrará tanto tiempo como prensa normal. Lo que quiero que cuando me largo presionar el botón sólo el evento de prensa larga debe activado no el evento de prensa normal. ¿Cómo puedo lograr esto?

Tengo la solución de mi Question.Return el verdadero en lugar de false.Just ver a continuación: –

  checkIn.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { Toast.makeText(HomeSafeActivity.this, "Long preess", Toast.LENGTH_LONG).show(); return true; } }); 

onLongClick() : devuelve un booleano para indicar si ha consumido el evento y no debe llevarse más. Es decir, return true para indicar que usted ha manejado el acontecimiento y debe parar aquí; return false si no lo ha manejado y / o el evento debe continuar con cualquier otro on-click listeners .

Debe devolver true en caso de un clic largo

Ejemplo:

  btnBookingMasterCab.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(View v) { if(preCheckoutInfo!=null){ rlChooseCard.setVisibility(View.VISIBLE); } return true; } }); 

Aquí hay una solución (esto funcionará si (cuando se activan ambos), primero se dispara la prensa larga, luego la prensa normal):

 int clickFlag = 0; checkIn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(clickFlag != 2){ Toast.makeText(HomeSafeActivity.this, "Normal Press", Toast.LENGTH_SHORT).show(); clickFlag = 0; } }); checkIn.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { Toast.makeText(HomeSafeActivity.this, "Long press", Toast.LENGTH_SHORT).show(); clickFlag = 2; return false; } }); } 

Prueba esto; deberia de funcionar.

 checkIn.setOnLongClickListener(new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { checkIn.setOnClickListener(null); Toast.makeText(HomeSafeActivity.this, "Long press", Toast.LENGTH_LONG).show(); return false; } }); 

Pruebe con android: onclick = "btnPressed" en lugar de OnClickListener y use OnLongClickListener no es un problema en mi código de prueba

  • Lanzamiento del botón de captura en Android
  • Android no puede encontrar el método desde el botón onClick en ListView Row
  • Botón de Toggle con estilo de botón sin bordes - ¿cómo obtener el fondo en estado marcado?
  • Agregar el botón de barra de acción con el cajón de navegación?
  • Cerrar la aplicación al pulsar el botón de nuevo en android
  • Cambiar el color de un botón inhabilitado en android
  • Androide. El botón no parece presionado
  • ¿Cómo setOnclickListener () en el botón dentro de ListView?
  • Android ExpandableListView Parent con botón
  • ¿Es posible crear un ToggleButton sin texto?
  • Color de fondo del botón de Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.