Как переопределить <ВВЕСТИ> ключевое поведение виртуальной клавиатуры в Android

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

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

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

7
задан John Conde 1 August 2012 в 11:45
поделиться

1 ответ

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

Чтобы сделать его многоразовым, я создал свой собственный класс супердиалога, который содержит 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);

}

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

// 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);
9
ответ дан 7 December 2019 в 03:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: