默认情况下禁用AlertDialog的(正)按钮

Joa*_*kim 10 android android-edittext android-alertdialog

你如何禁用一个Android的肯定按钮AlertDialog默认

在用户对视图进行更改之前,希望禁用正按钮(在本例中为"保存")似乎是很正常的(在本例中为EditText.

我知道我可以通过调用来获取按钮,dialog.getButton(DialogInterface.BUTTON_POSITIVE)但如果show()尚未调用此调用将返回null .

rKr*_*hna 17

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setPositiveButton(android.R.string.ok, null);
AlertDialog dialog = builder.create();
dialog.setOnShowListener(new OnShowListener() {

    @Override
    public void onShow(DialogInterface dialog) {
        if(condition)
        ((AlertDialog)dialog).getButton(AlertDialog.BUTTON_POSITIVE).setEnabled(false);
    }
});

dialog.show();
Run Code Online (Sandbox Code Playgroud)


yra*_*lik 8

您必须调用 show() 才能访问警报对话框的按钮。因此,就在您在 alertDialog 上调用 show() 之后,您将获得否定按钮并将其设置为禁用,如下所示:

AlertDialog.Builder builder = new AlertDialog.Builder(getContext())
            .setTitle("Title")
            .setMessage("Message")
            .setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {

                }
            })
            .setNegativeButton(android.R.string.no, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {

                }
            })
            .setIcon(android.R.drawable.ic_dialog_alert);
    AlertDialog d = builder.show();
    d.getButton(AlertDialog.BUTTON_NEGATIVE).setEnabled(false);
Run Code Online (Sandbox Code Playgroud)

因此,默认情况下,它的否定按钮变为禁用状态。