2

edittext入力PIN番号と携帯電話番号を小さく設定したアプリケーションを実装する必要があります。各編集テキストには、一度に1文字が含まれます。
このアプリを実行すると、ボックスごとにそれぞれに焦点を当てる必要があることがわかりましたedittext
したがって、この場合、最初に文字を入力した後、次のエディットテキストにフォーカスを設定し、2番目に文字を入力した後に3番目に移動することができます。
だから私を助けてください

こちらがレイアウト画像です。

ここに画像の説明を入力してください

4

4 に答える 4

4
1. implements TextWatcher on EditTexts

そして、Edittextを取得すると、テキストの長さは1になります。

2. Change focus on other EditText using

requestFocus()他のEditTextを呼び出します。

コード:(このコードは理解のためのものです。ケースやニーズによって異なる場合があります)

public class LoginActivity extends Activity implements TextWatcher
{
 .
 .
 .

  editTextUName = (EditText) findViewById(R.id.edttextusername);
  editTextUName.addTextChangedListener(this);
  editTextPwd = (EditText) findViewById(R.id.edttextpassword);
  editTextPwd.addTextChangedListener(this);

@Override
public void afterTextChanged(Editable s)
{
    if (s.toString().length() == 1)
    {
              editTextPwd.requestFocus();
    }
}
于 2012-06-15T12:45:32.483 に答える
0

このコードを使用する

final EditText EditText01 = (EditText) findViewById(R.id.editText01);
final EditText EditText02= (EditText) findViewById(R.id.editText02);
final EditText EditText03 = (EditText) findViewById(R.id.editText03);
final EditText EditText04 = (EditText) findViewById(R.id.editText04);

EditText01.requestFocus();
EditText01.setOnFocusChangeListener(new View.OnFocusChangeListener() {

                    @Override
                    public void onFocusChange(final View v,
                            final boolean hasFocus) {

                        if (hasFocus) {
                            final InputMethodManager mgr = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                            // only will trigger it if no physical keyboard is
                            // open
                            mgr.showSoftInput(EditText01,
                                    InputMethodManager.SHOW_IMPLICIT);
                        }

                    }
                });

        EditText01.setOnKeyListener(new View.OnKeyListener() {

            @Override
            public boolean onKey(final View v, final int keyCode,
                    final KeyEvent event) {

                if (event.getAction() == KeyEvent.ACTION_DOWN) {
                    if (keyCode == KeyEvent.KEYCODE_DEL) {
                        EditText01.requestFocus();
                    } else {
                        EditText02.requestFocus();
                    }
                }
                return false;
            }
        });

        EditText02.setOnKeyListener(new View.OnKeyListener() {

            @Override
            public boolean onKey(final View v, final int keyCode,
                    final KeyEvent event) {

                if (event.getAction() == KeyEvent.ACTION_DOWN) {
                    if (keyCode == KeyEvent.KEYCODE_DEL) {
                        EditText01.requestFocus();
                    } else {
                        EditText03.requestFocus();
                    }
                }
                return false;
            }
        });
        EditText03.setOnKeyListener(new View.OnKeyListener() {

            @Override
            public boolean onKey(final View v, final int keyCode,
                    final KeyEvent event) {

                if (event.getAction() == KeyEvent.ACTION_DOWN) {
                    if (keyCode == KeyEvent.KEYCODE_DEL) {
                        EditText02.requestFocus();
                    } else {
                        EditText04.requestFocus();
                    }

                }
                return false;
            }
        });

        EditText04.setOnKeyListener(new View.OnKeyListener() {

            @Override
            public boolean onKey(final View v, final int keyCode,
                    final KeyEvent event) {

                if (event.getAction() == KeyEvent.ACTION_DOWN) {
                    if (keyCode == KeyEvent.KEYCODE_DEL) {
                        EditText03.requestFocus();
                    } 

                }

                return false;

            }
        });
于 2012-06-15T13:08:23.553 に答える
0

テキスト変更リスナーを追加する

      textView1.addTextChangedListener(new TextWatcher() {
            public void afterTextChanged(Editable s) {

               textView2.requestFocus();

            }

            public void beforeTextChanged(CharSequence s, int start, int count,             int after) {
             }

            public void onTextChanged(CharSequence s, int start, int before, int count) {
            }
        });
于 2015-09-02T11:32:20.860 に答える
0

これは正常に機能するはずです。mPinFirstなどは、各ピンエントリを表すEditTextsです。バックスペースにも注意する必要があります。

    mPinFirst.setOnKeyListener(onKeyListener);
    mPinSecond.setOnKeyListener(onKeyListener);
    mPinThird.setOnKeyListener(onKeyListener);
    mPinFourth.setOnKeyListener(onKeyListener);




View.OnKeyListener onKeyListener = new View.OnKeyListener() {
        @Override
        public boolean onKey(View view, int i, KeyEvent keyEvent) {

        if(KeyEvent.KEYCODE_DEL != keyEvent.getKeyCode()) {
            if (((ESEditText) view).getText().length() == 1)
                if (view.focusSearch(View.FOCUS_RIGHT) != null) {
                    view.focusSearch(View.FOCUS_RIGHT).requestFocus();
                    return true;
                }
        }else{
            ((ESEditText) view).setText("");
            if (view.focusSearch(View.FOCUS_LEFT) != null) {
                view.focusSearch(View.FOCUS_LEFT).requestFocus();
                return true;
            }
        }
        return false;
    }
};
于 2017-10-29T17:49:47.007 に答える