web-dev-qa-db-ja.com

Android edittext key returnは次のテキストに移動します

一連のEditTextエントリがあります。ユーザーがEnterキーを押すと、次のEditextに移動します。私は一度にこれを行う方法を知っていますが、すべてのedittextコントロールにキーエントリをチェックしてカーソルを進める同じ機能を使用するように指示する方法があります。 EditTextsごとに1つの関数を用意するのはちょっとおかしい

41
Mark Worsnop

キーをスニッフィングするよりもはるかに簡単です:Android:singleLine="true"およびAndroid:imeOptions="actionNext"を設定してみてください(少なくとも1行の入力テキストビューの場合)。詳細については、Android ドキュメント TextViewを参照してください。

更新:singleLine非推奨 になりましたが、省略してもかまいません。 Android:inputType="textMultiLine"を明示的に設定しない限り、これは編集可能なテキストのデフォルトの動作であり、inputTypeは編集可能なテキストのmaxLines="1"の推奨されるsingleLine置換をオーバーライドします。

94
Yoni Samlan

ヨニから与えられた答えの代替または新しいアプローチについて...

singleLineは考慮される 非推奨 であるため、Android:maxLines="1"を使用してAndroid:inputType="text"に手動で設定できます。

簡単な説明:

  • Android:inputType="text"を使用して、入力を具体的に プレーンテキスト として扱います。
  • そして、Android:maxLines="1"を使用して、テキストの最大行数を1に設定します(推奨)。

maxLines="1"を単独で使用しても効果はありませんが、Adamが言及しているように、inputType="text"単独でも機能する場合があります(これはチェックしていません)。

8
edmundo096

追加中

    Android:inputType="text"

xMLで十分です。入力タイプを定義していない場合、次の行に進みます。

5
Adam Staszak

すべてのeditTextオブジェクトに単一のイベントリスナーを追加してみてください。

OnKeyListener myKeyListener = new OnKeyListener() {
        @Override
        public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
            // TODO: do what you got to do
            return false;
        }
    };
editText1.setOnKeyListener(myKeyListener);
editText2.setOnKeyListener(myKeyListener);
editText3.setOnKeyListener(myKeyListener);
2
Adukra

Styles.xmlでこのカスタムスタイルを適用する

<style name="SingleLineText">
    <item name="Android:inputType">text</item>
    <item name="Android:maxLines">1</item>
</style>

そして、このようにEditTextで設定します

 style="@style/SingleLineText"
0
javierZanetti

EditTextに次の行を追加します

 Android:singleLine="true"
 Android:maxLines="1"
0
Sudhir singh