Клавиша возврата текста редактирования Android переходит к следующему тексту - PullRequest
41 голосов
/ 15 февраля 2011

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

Ответы [ 6 ]

94 голосов
/ 15 февраля 2011

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

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

8 голосов
/ 15 мая 2015

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

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

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

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

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

5 голосов
/ 14 октября 2014

Добавление

    android:inputType="text"

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

2 голосов
/ 15 февраля 2011

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

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

 android:singleLine="true"
 android:maxLines="1"
0 голосов
/ 22 февраля 2017

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

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

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

 style="@style/SingleLineText"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...