imeOptions «actionNext» программно - как перейти к следующему полю?

92

В XML макета можно указать, android:imeOptions="actionNext"какая Nextкнопка добавляет на виртуальную клавиатуру, и при нажатии на нее фокус переходит на следующее поле.

Как сделать это программно - например, на основе фокуса триггера какого-либо события перейти к следующему полю?

Лаймонциюс
источник

Ответы:

192

Вы можете использовать константы из класса EditorInfo для параметров IME. подобно,

editText.setImeOptions(EditorInfo.IME_ACTION_NEXT);
Firewall_Sudhan
источник
да, в противном случае он вставляет новую строку и переходит к ней =)
Ilker Baltaci
2
Как это отвечает на вопрос ОП? Это не означает автоматического перехода к следующему полю.
hitmaneidos
27

Найдите следующее фокусируемое поле и вызовите его requestFocus().

TextView nextField = (TextView)currentField.focusSearch(View.FOCUS_RIGHT);
nextField.requestFocus();
Джастин
источник
2
Это не верный ответ в отношении заголовка этого вопроса, но технически правильный ответ. Ниже ответ более уместен.
Шон Гловер,
4
@SeanGlover, вы никогда не должны использовать такие слова, как показано ниже, потому что положение ответов постоянно меняется.
Nike15,
20

Просто предложение, если вы используете

     EditTextSample.setImeOptions(EditorInfo.IME_ACTION_DONE); 

это не работает, убедитесь, что ваш EditText использует одну строку.

Например:

       editTextSample.setSingleLine();
Ziniestro
источник
1
Спасибо. Это должен быть принятый ответ. Просто вызовите setSingleLine () ПЕРЕД setImeOptions.
Герман
8

Всегда есть необходимость добавлять дополнительные клавиши помимо клавиш по умолчанию, доступных на виртуальной QWERTYклавиатуре.

Использование XML

<EditText android:text="@+id/EditText01" 
android:id="@+id/EditText01"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:imeOptions="actionDone"/>

By Programmatic Way

EditorInfoНаиболее полезный класс , когда вам приходится иметь дело с любым типом пользовательского ввода в вашем Android приложения.

IME_ACTION_DONE: Это действие выполняет операцию «готово», и IME закрывается.

 EditTextSample.setImeOptions(EditorInfo.IME_ACTION_DONE);

Для получения дополнительной информации посетите http://developer.android.com/reference/android/view/inputmethod/EditorInfo.html.

IntelliJ Amiya
источник
1

Кулон котлин

editText.imeOptions = EditorInfo.IME_ACTION_DONE
Кузду
источник
0
editText.setLines(1);
editText.setSingleLine(true);
editText.setImeOptions(EditorInfo.IME_ACTION_GO);

Я решаю проблему, убедитесь, что с одной строкой, и перейдите к следующему editText, когда нажмите Enter

Генделика
источник
0

В моем случае установите imeOptions, чтобы устранить проблему.

edtAnswer.maxLines = 1
edtAnswer.inputType = InputType.TYPE_CLASS_TEXT
edtAnswer.imeOptions = EditorInfo.IME_ACTION_NEXT
Mete
источник
0

Вы можете сделать это

edittext.imeOptions = EditorInfo.IME_ACTION_DONE //for done button

или

edittext.imeOptions = EditorInfo.IME_ACTION_NEXT //for next button

Но ... вы должны понимать, что если вы используете фильтры для редактирования текста, вам нужно установить

edittext.setSingleLine()
Кишан Соланки
источник