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);

Я вирішую проблему, переконайтесь, що в одному рядку, і переходьте до наступного редагування тексту, коли натискаєте клавішу 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.