Возврат клавиши Android edittext переходит к следующему тексту

У меня есть ряд записей EditText, и я хотел бы, чтобы, когда пользователь нажимал клавишу ввода, он переходил к следующему EditText. Я знаю, как это сделать по одному, но есть ли способ указать всем элементам управления edittext использовать одну и ту же функцию, которая проверяет ввод ключа и перемещает курсор. Кажется сумасшедшим иметь одну функцию для каждого из EditTexts.


person Mark Worsnop    schedule 15.02.2011    source источник
comment
вы ввели inputType=text (т.е. не несколько строк)   -  person xandy    schedule 15.02.2011
comment
см. подробный ответ здесь с готово"> stackoverflow.com/questions/3093775/   -  person Zare Ahmer    schedule 02.07.2014


Ответы (6)


Гораздо проще, чем прослушивание ключей: попробуйте установить android:singleLine="true" и android:imeOptions="actionNext" (по крайней мере, для текстовых представлений с однострочным вводом). Дополнительные сведения см. в документации по Android для TextView.

Обновление: singleLine теперь устарело, но вы можете оставить это из. Это поведение по умолчанию для редактируемого текста, если вы явно не установили android:inputType="textMultiLine", а inputType в любом случае переопределяет предлагаемую замену singleLine на maxLines="1" для редактируемого текста.

person Yoni Samlan    schedule 15.02.2011
comment
android:singleLine не устаревает. Это константа singleLine, которая обесценилась. - person Olumide; 08.12.2015
comment
@Olumide: Интересно - если это правда, то это ошибка документа: этот атрибут устарел. Вместо этого используйте maxLines, чтобы изменить макет статического текста, и используйте флаг textMultiLine в атрибуте inputType вместо редактируемых текстовых представлений. - person Yoni Samlan; 15.12.2015

Для альтернативы или более нового подхода к ответу, данному Йони...

Поскольку singleLine считается устаревшим, мы можем вручную установить значение android:maxLines="1" с помощью android:inputType="text".

Небольшое пояснение:

  • Мы используем android:inputType="text" для обработки ввода как простого текста.
  • И мы используем android:maxLines="1", чтобы установить максимальное количество строк текста в 1 (как это предполагает).

Использование только maxLines="1" не вызовет никакого эффекта, но может работать только inputType="text", как упоминает Адам (хотя я этого не проверял).

person edmundo096    schedule 15.05.2015

Добавление

    android:inputType="text"

в XML достаточно. Когда вы не определяете тип ввода, он переходит на следующую строку.

person Adam Staszak    schedule 14.10.2014

Вы можете попробовать добавить один прослушиватель событий ко всем вашим объектам editText:

OnKeyListener myKeyListener = new OnKeyListener() {
        @Override
        public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
            // TODO: do what you got to do
            return false;
        }
    };
editText1.setOnKeyListener(myKeyListener);
editText2.setOnKeyListener(myKeyListener);
editText3.setOnKeyListener(myKeyListener);
person Adukra    schedule 15.02.2011

Примените этот пользовательский стиль в файле styles.xml.

<style name="SingleLineText">
    <item name="android:inputType">text</item>
    <item name="android:maxLines">1</item>
</style>

а затем установите его в EditText следующим образом

 style="@style/SingleLineText"
person javierZanetti    schedule 22.02.2017

Добавьте следующие строки в EditText

 android:singleLine="true"
 android:maxLines="1"
person Sudhir singh    schedule 23.01.2018