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


92

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

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

Ответы:


192

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

editText.setImeOptions(EditorInfo.IME_ACTION_NEXT);

да, в противном случае он вставляет новую строку и переходит к ней =)
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();

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.



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

0

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

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

или

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

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

edittext.setSingleLine()
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.