Выполните как обычный щелчок, так и длинный щелчок на кнопке
У меня есть одна кнопка с именем CheckIn. Посмотрите на мой код.
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;
}
});
Теперь, когда я нормально нажимаю кнопку, сообщение отображается как "Нормальное нажатие". Когда "Длинные" нажимают кнопку, сообщение показывает, как долго нажимают, а также "Нормальный" нажимают оба. Что я хочу, когда я долгое время нажимаю кнопку, только длительное событие прессования должно вызывать не нормальное событие прессования. Как я могу это достичь?
Ответы
Ответ 1
Я получил решение своего вопроса. Возвращаю true, а не false. Просто посмотрите ниже: -
checkIn.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
Toast.makeText(HomeSafeActivity.this, "Long preess", Toast.LENGTH_LONG).show();
return true;
}
});
Ответ 2
onLongClick()
- Это возвращает логическое значение, указывающее, использовало ли вы событие, и его нельзя переносить дальше. То есть return true
, чтобы указать, что вы обработали событие, и он должен остановиться здесь; return false
, если вы не обработали его и/или событие должно продолжаться до любого другого on-click listeners
.
Ответ 3
Вы должны вернуть true в случае длительного клика
Пример:
btnBookingMasterCab.setOnLongClickListener(new OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
if(preCheckoutInfo!=null){
rlChooseCard.setVisibility(View.VISIBLE);
}
return true;
}
});
Ответ 4
Здесь одно решение (это будет работать, если (когда оба запускаются), сначала запускается длинное нажатие, затем нормальное нажатие):
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;
}
});
}
Ответ 5
public boolean onLongClick (View v) is boolean возвращает true, если он нажат
поэтому верните true,
Ответ 6
Попробуйте это; он должен работать.
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;
}
});
Ответ 7
Попробуйте андроид: onclick = "btnPressed" вместо OnClickListener и использовать OnLongClickListener не проблема в моем тестовом коде