103

在布局 XML 中,可以指定虚拟键盘中的android:imeOptions="actionNext"哪个添加Next按钮,然后单击它 - 焦点跳转到下一个字段。

如何以编程方式执行此操作 - 例如基于某些事件触发焦点转到下一个字段?

4

10 回答 10

210

您可以将 EditorInfo 类中的常量用于 IME 选项。像,

editText.setImeOptions(EditorInfo.IME_ACTION_NEXT);
于 2011-05-09T19:38:24.847 回答
30

搜索下一个可聚焦字段,然后调用requestFocus()

TextView nextField = (TextView)currentField.focusSearch(View.FOCUS_RIGHT);
nextField.requestFocus();
于 2010-08-11T14:13:18.793 回答
23

只是建议,如果您正在使用

     EditTextSample.setImeOptions(EditorInfo.IME_ACTION_DONE); 

它不起作用,请确保您的 EditText 使用单行。

例如:

       editTextSample.setSingleLine();
于 2016-02-01T02:20:58.840 回答
7

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 应用程序中处理任何类型的用户输入时,An是最有用的类。

IME_ACTION_DONE:此操作执行“完成”操作,无需输入任何内容,IME 将关闭。

 EditTextSample.setImeOptions(EditorInfo.IME_ACTION_DONE);

有关更多信息,您可以访问http://developer.android.com/reference/android/view/inputmethod/EditorInfo.html

于 2015-05-03T06:30:21.243 回答
1

科特林吊坠

editText.imeOptions = EditorInfo.IME_ACTION_DONE
于 2018-10-22T14:01:55.920 回答
1
editText.setLines(1);
editText.setSingleLine(true);
editText.setImeOptions(EditorInfo.IME_ACTION_GO);

我解决了这个问题,请确保使用单行并在单击 Enter 时转到下一个 editText

于 2019-04-17T22:33:42.740 回答
1

我尝试了所有答案,但EditorAction对我有用!

EditText.onEditorAction(EditorInfo.IME_ACTION_NEXT)

我的 XML 布局:

  <EditText
            android:id="@+id/input1"
            style="@style/edittext"
            android:nextFocusForward="@id/input2"
            android:layout_width="0dp"
            android:layout_height="wrap_content"/>
        <EditText
            android:id="@+id/input2"
            style="@style/edittext"
            android:nextFocusLeft="@id/input1"
            android:layout_weight="1"
            android:nextFocusRight="@id/input3"
            android:layout_width="0dp"
            android:layout_height="wrap_content"/>

和 Kotlin 代码:

input1.onEditorAction(EditorInfo.IME_ACTION_NEXT)

现在焦点移动到input2 Edittext。

于 2021-06-19T13:58:32.217 回答
0

就我而言,设置一个 imeOptions 来解决问题。

edtAnswer.maxLines = 1
edtAnswer.inputType = InputType.TYPE_CLASS_TEXT
edtAnswer.imeOptions = EditorInfo.IME_ACTION_NEXT
于 2020-05-10T07:52:36.717 回答
0

你可以这样做

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

或者

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

但是... 您需要了解,如果您对edittext使用过滤器,那么您需要设置

edittext.setSingleLine()
于 2020-08-20T08:04:07.667 回答
0

您可以使用以下代码跳转到下一个字段:

BaseInputConnection inputConnection = new BaseInputConnection(editText, true);
inputConnection.performEditorAction(EditorInfo.IME_ACTION_NEXT);
//Use EditorInfo.IME_ACTION_UNSPECIFIED if you set android:imeOptions on the EditText
于 2021-01-15T20:33:24.627 回答