在具有兩個輸入字段(用戶名/密碼)的登錄對話框中,我想將焦點設置在第二個字段上(因爲用戶名存儲在首選項中)。如何將焦點設置到AlertDialog中的特定輸入字段?
AlertDialog.Builder提供了一種設置焦點的方法嗎?使用alertdialog太
在具有兩個輸入字段(用戶名/密碼)的登錄對話框中,我想將焦點設置在第二個字段上(因爲用戶名存儲在首選項中)。如何將焦點設置到AlertDialog中的特定輸入字段?
AlertDialog.Builder提供了一種設置焦點的方法嗎?使用alertdialog太
蔭,你可以嘗試
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
}
問候
如果你正在使用你的對話框的自定義XML的佈局,你可以使用<requestFocus />
你的EditText
。
<EditText
android:id="@+id/etPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPassword" >
<requestFocus />
</EditText>
或者,如果你想這樣做編程,上所示的對話框EditText
後您的使用.requestFocus()
。假設你有一個包含用戶名和密碼字段命名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();
這種解決方案意味着我將無法使用AlertDialog.Builder類? – mjn
ofc,我做了編輯;) – Oli
這很容易:)謝謝 – mjn