it-swarm-ru.tech

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

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

40
Mark Worsnop

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

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

93
Yoni Samlan

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

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

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

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

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

7
edmundo096

Добавление

    Android:inputType="text"

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

4
Adam Staszak

Вы можете попробовать добавить одного слушателя событий для всех ваших объектов 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);
2
Adukra

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

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

а затем установите его в EditText, как это

 style="@style/SingleLineText"
0
javierZanetti

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

 Android:singleLine="true"
 Android:maxLines="1"
0
Sudhir singh