3

2 つの入力フィールド (ユーザー名/パスワード) があるログイン ダイアログで、2 番目のフィールドにフォーカスを設定したいと思います (ユーザー名は設定に保存されているため)。

AlertDialog.Builder はフォーカスを設定する方法を提供しますか?

4

2 に答える 2

5

私もアラートダイアログを使用しています。試してみてください

final EditText input = new EditText(this);    
input.setInputType(InputType.TYPE_CLASS_TEXT); // you should use .TYPE_TEXT_VARIATION_PASSWORD
input.requestFocus();

例:

AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle(x);
        builder.setIcon(R.drawable.x);

        final EditText input = new EditText(this);

        input.setInputType(InputType.TYPE_CLASS_TEXT);
        input.setText("mytext");

        builder.setView(input);

        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
            @Override
          // xy

        });
        builder.setNegativeButton(cancel, new DialogInterface.OnClickListener() {
            @Override
            // xy
        });

        builder.show();

        input.requestFocus(); // <--- for the focus
    }

よろしく

于 2013-05-22T13:12:30.867 に答える
4

ダイアログにカスタム XML レイアウトを使用<requestFocus />している場合は、 EditText.

<EditText
    android:id="@+id/etPassword"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:inputType="textPassword" >

    <requestFocus />
</EditText>

または、プログラムで実行する場合は、ダイアログが表示された後にon を使用.requestFocus()します。Username フィールドと Password フィールドを含むEditText名前のカスタム レイアウトがあるとします。custom_login_dialog.xml

    // Inflate your custom layout
    LayoutInflater inflater = (LayoutInflater) getLayoutInflater();
    View customView = inflater.inflate(R.layout.custom_login_dialog, null);

    // Define your EditText fields
    final EditText etUsername = (EditText) customView.findViewById(R.id.etUsername);
    final EditText etPassword = (EditText) customView.findViewById(R.id.etPassword);

    // Build the dialog
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setView(customView); // Set the view of the dialog to your custom layout
    builder.setTitle("Login");
    builder.setPositiveButton("Login", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            // ...
        }
    });
    builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            // ...
        }
    });

    // Create and show the dialog
    builder.create().show();

    // Request focus after showing dialog
    etPassword.requestFocus();
于 2013-05-22T13:16:19.460 に答える