【问题标题】:Can I set a Button already in my xml to be the positive or negative Button in a Dialog?我可以在我的 xml 中将一个按钮设置为对话框中的正按钮或负按钮吗?
【发布时间】:2017-03-24 01:54:29
【问题描述】:

我宁愿不使用警报对话框,但如果我可以将肯定按钮设置为我已经拥有的按钮,我会这样做。如果我不能这样做,有没有办法在自定义对话框中设置正负按钮?

【问题讨论】:

  • 您确实意识到 AlertDialog 能够通过 setContentView developer.android.com/reference/android/app/… 自定义内容视图?然后只需将按钮链接到您的视图,这样您就可以听到被点击的按钮。
  • @JoxTraex 是的,我知道,但我不能告诉它我想哪个按钮成为积极按钮。

标签: java android dialog android-alertdialog android-dialog


【解决方案1】:

您可以使用以下自定义警报对话框。

public class CustomAlertDialog {

    public void showDialog(Context activity, String msg, String buttonText, final CustomDialogListener customDialogListener){ //one button with callback
        final Dialog dialog = new Dialog(activity);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setCancelable(false);
        dialog.setContentView(R.layout.custom_alert);

        TextView text = (TextView) dialog.findViewById(R.id.text_alertdialog);
        text.setText(msg);

        Button dialogButton = (Button) dialog.findViewById(R.id.btn_alert_dialog);
        dialogButton.setText(buttonText);
        dialogButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
                customDialogListener.onPositiveButtonClick();
            }
        });

        dialog.show();

    }

    public void showDialog(Context activity, String msg, String positiveButtonText, String negativeButtonText, final CustomDialogListener customDialogListener){//two button with callback
        final Dialog dialog = new Dialog(activity);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setCancelable(false);
        dialog.setContentView(R.layout.custom_alert_two_button);

        TextView text = (TextView) dialog.findViewById(R.id.text_alert_two_dialog);
        text.setText(msg);

        Button positiveDialogButton = (Button) dialog.findViewById(R.id.btn_alert_two_dialog_YES);
        Button negativeDialogButton = (Button) dialog.findViewById(R.id.btn_alert_two_dialog_NO);
        positiveDialogButton.setText(positiveButtonText);
        negativeDialogButton.setText(negativeButtonText);

        positiveDialogButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
                customDialogListener.onPositiveButtonClick();
            }
        });

        negativeDialogButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
                customDialogListener.onNegativeButtonClick();
            }
        });

        dialog.show();

    }


    public void showDialog(Context activity, String msg, String buttonText){ //simple alert without callback
        final Dialog dialog = new Dialog(activity);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setCancelable(false);
        dialog.setContentView(R.layout.custom_alert);

        TextView text = (TextView) dialog.findViewById(R.id.text_alertdialog);
        text.setText(msg);

        Button dialogButton = (Button) dialog.findViewById(R.id.btn_alert_dialog);
        dialogButton.setText(buttonText);
        dialogButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dialog.dismiss();
            }
        });

        dialog.show();

    }

}

custom_alert.xml 包含一个按钮和一个用于显示消息的 textView。

custom_alert_two_button.xml 包含两个按钮和一个用于显示消息的 textView。

最后一个只包含一个文本视图来显示消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    相关资源
    最近更新 更多