Итак, у меня есть EditText с inputType как numberDecimal (я не думаю, что это имеет значение, но неважно) ... Я хочу, чтобы, когда я нажимаю и удерживаю клавишу возврата (долгое нажатие), все числа в EditText удаляются сразу вместо того, чтобы быстро по одному, как это происходит в настоящее время. Это возможно? Единственный поток, который я смог найти по этой проблеме, - это это, но я попытался реализовать это решение (переопределив onKeyLongPress()), и этот метод никогда не вызывается.
Тестирование @Barns на эмуляторе и моем личном устройстве (Pixel XL). У обоих нет физических кнопок возврата, они являются экранными кнопками возврата. Есть ли сейчас на каком-нибудь современном устройстве Android физические кнопки возврата?
Возможно нет! У меня несколько устройств, и только одно (с Marshmallow 6.0) имеет физическую кнопку возврата. На устройствах без физической кнопки возврата я получаю срабатывание метода onKeyDown(), но не onKeyLongPress(). Я видел одну реализацию, в которой кнопка «удалить» на программных клавишах использовалась для наблюдения за onKeyLongPress(), а затем для удаления всех символов в представлении EditText, которое, на мой взгляд, более интуитивно понятно.




editText.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
//You can identify which key pressed buy checking keyCode value with KeyEvent.KEYCODE_
if (event.getAction() == KeyEvent.ACTION_DOWN && event.getKeyCode() == KeyEvent.KEYCODE_DEL) {
//this is for backspace
}
return false;
}
});
Вы тестируете устройство с физической кнопкой возврата? Я протестировал метод
onKeyLongPress()на двух устройствах - одно с физической кнопкой возврата, и это работает. На другом устройстве есть экранная кнопка «Назад», и методonKeyLongPress()не вызывается.