Intereting Posts
Добавление кнопки «rate my app» в игре libgdx Драйвер для отладки USB на ASUS Memo Pad FHD 10 (ME302KL) в Windows 7 Мониторинг сетевой активности в приложении HTML5 iphone / android? Кинжал 2 «Превосходный компонент кинжала» не может скомпилировать? Автоматически сгенерированный класс Android – Какой из них использовать Active Android или Realm Используя собственный с android ndk Android: HorizontalScrollView внутри ScrollView Возможно ли получить доступ к сигналу динамика на Android? Изменение содержимого Spinner при открытии Как получить объект Date в формате «YYYY-MM-DD» в android Android – ListView внутри галереи делает прокрутку не гладкой «Холст: попытка рисовать слишком большое растровое изображение», когда размер экрана Android N установлен больше, чем Small Как получить установленные разрешения приложений Как определить с помощью Robolectric, что onBackPressed называется программным? Фрагменты. Нужно ли использовать обертыватель активности вокруг фрагмента, который включает всю активность?

Как переопределить поведение клавиши <ENTER> виртуальной клавиатуры в Android

Я хочу переопределить поведение клавиши ENTER виртуальной клавиатуры, чтобы:

  • Когда на экране появляется больше полей, это «вкладки» в следующее поле
  • Когда он является последним полем экрана, он выполняет действие по умолчанию на экране

Я играю с параметрами IME и ярлыками, но просто не понимаю, чего хочу. У кого-нибудь есть предложения?

Solutions Collecting From Web of "Как переопределить поведение клавиши <ENTER> виртуальной клавиатуры в Android"

С помощью другого форума я нашел способ сделать это.

Чтобы сделать его многоразовым, я создал свой собственный класс OnKeyListener который содержит 2 объекта OnKeyListener и абстрактный метод отправки:

 public abstract class MyAbstractDialog extends Dialog { /** * OnKeyListener that puts the focus down when the ENTER key is pressed */ protected View.OnKeyListener onEnterFocusDown = new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) { v.requestFocus(View.FOCUS_DOWN); return true; } return false; } }; /** * OnKeyListener that submits the page when the ENTER key is pressed */ protected View.OnKeyListener onEnterSubmitView = new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if ((event.getAction() == KeyEvent.ACTION_DOWN) && (keyCode == KeyEvent.KEYCODE_ENTER)) { submitView(v); return true; } return false; } }; protected abstract void submitView(View v); } 

Теперь в Dialog я могу использовать эти объекты для установки в своих полях:

 // make the ENTER key on passwordField1 put the focus on the next field passwordField1.setOnKeyListener(onEnterFocusDown); // make the ENTER key on passwordField2 submit the page passwordField2.setOnKeyListener(onEnterSubmitView);