プログラムでimeOptions“ actionNext”-次のフィールドにジャンプする方法は?


91

レイアウトXMLでは、仮想キーボードのandroid:imeOptions="actionNext"どの追加Nextボタンを指定するか、ボタンをクリックして指定できます。フォーカスは次のフィールドにジャンプします。

これをプログラムで行う方法-たとえば、次のフィールドに移動するためのいくつかのイベントトリガーフォーカスに基づいて?

回答:


191

IMEオプションには、EditorInfoクラスの定数を使用できます。お気に入り、

editText.setImeOptions(EditorInfo.IME_ACTION_NEXT);

はい、そうでなければ新しい行を挿入してその行にジャンプします=)
Ilker Baltaci 2017

2
これはOPの質問にどのように答えますか?これは自動的に次のフィールドにジャンプしません。
hitmaneidos

27

次のフォーカス可能なフィールドを検索して、を呼び出しrequestFocus()ます。

TextView nextField = (TextView)currentField.focusSearch(View.FOCUS_RIGHT);
nextField.requestFocus();

2
これは、この質問のタイトルに関して真の答えではありませんが、技術的には有効な答えです。以下の答えがより適切です。
Sean Glover

4
@SeanGlover 以下のような単語は使用しないでください。回答の位置が変化し続けるためです。
Nike15

19

あなたが使用している場合、単なる提案

     EditTextSample.setImeOptions(EditorInfo.IME_ACTION_DONE); 

動作しません。EditTextが1行を使用していることを確認してください。

例えば:

       editTextSample.setSingleLine();

1
ありがとう。これは受け入れられるべき答えです。setImeOptionsの前にsetSingleLine()を呼び出すだけです。
ヘルマン

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

私は問題を解決し、1行で確認して、Enterをクリックすると次のeditTextに進みます


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にフィルターを使用している場合は、設定する必要があることを理解する必要があります。

edittext.setSingleLine()
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.