13

2つの編集テキストを持つレイアウトがあります。最初のキーでエンター キーを押したときに、2 番目のキーをフォーカスして編集可能に設定する必要があります。フォーカスを設定するためのコードがありますが、2 番目のコードがフォーカスされたときに入力を開始できません

PS また、追加の行を作成する可能性なしに、edittext を正確に 1 行の高さにする必要があります。それも同様に機能します。PSSアンドロイド2.3

XML コード:

<EditText
            android:id="@+id/email"
            style="@style/profileLoginInput"
            android:layout_width="match_parent"
            android:layout_height="wrap_content" android:hint="@string/email" android:ems="10" android:lines="1" android:maxLines="1" android:ellipsize="end">

            <requestFocus />
        </EditText>

<EditText
            android:id="@+id/password"
            style="@style/profileLoginInput"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:ems="10"
            android:inputType="textPassword" android:hint="@string/password">

Java コード:

((EditText) findViewById(R.id.email)).setOnKeyListener(new OnKeyListener(){
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event)
            {
                if (event.getAction() == KeyEvent.ACTION_DOWN)
                {
                    switch (keyCode)
                    {
                        case KeyEvent.KEYCODE_DPAD_CENTER:
                        case KeyEvent.KEYCODE_ENTER:
                        ((EditText) findViewById(R.id.password)).requestFocus();
                        return true;
                        default:
                            break;
                    }
                }
                return false;
            }
        });
4

5 に答える 5

23

あなたはこれを考えすぎています。Java で何もせずに、XML で EditText 入力の順序を直接指定できます。

パラメータを使用してandroid:nextFocusDown、ユーザーが Enter キーを押したときにフォーカスを取得するフィールドを指定します。

于 2012-06-21T07:37:55.917 に答える
12
android:inputType="text"
android:nextFocusDown="@+id/..."

私のために働いた

于 2013-07-19T08:28:22.203 に答える
4

android:nextFocusDown 私にとってはうまくいきましたが、次のメソッドのみを削除してから、その作業を行いました:

editText1.setOnEditorActionListener(new EditText.OnEditorActionListener() {

 @Override

public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
      if (actionId == EditorInfo.IME_ACTION_DONE ||   
              actionId == EditorInfo.IME_ACTION_NEXT) {
         editText2.requestFocus();
         return false;
      }

      return false;
    }
});
于 2013-08-20T07:33:19.537 に答える
4

id の前に + を追加する以外に:

android:inputType="text"
android:nextFocusDown="@+id/..."

私も追加する必要がありました:

android:imeOptions="actionNext"
于 2016-10-16T22:09:06.517 に答える
2

このコードをエミュレータで実行すると、バグが発生するようです。ただし、電話では機能します

于 2012-07-02T07:09:52.643 に答える