How to change the colour of Positive and negative button in Custom Alert dialog in android

前端 未结 5 1421
既然无缘
既然无缘 2020-12-29 07:12

What i am doing: I am creating a custom alert dialog

What i am trying to do: along with below code, How to change the color of act

相关标签:
5条回答
  • 2020-12-29 07:15

    you can do it like this-

    public void createDialog(final Context context) {
        AlertDialog.Builder builder = new AlertDialog.Builder(context);
        builder.setMessage("Do you want to exit from app");
        builder.setCancelable(false);
        builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                dialog.cancel();
            }
        });
    
        builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(context, "You exit from app",
                        Toast.LENGTH_LONG).show();
    
            }
        });
    
        AlertDialog alert = builder.create();
        alert.show();
        Button nbutton = alert.getButton(DialogInterface.BUTTON_NEGATIVE);
        nbutton.setBackgroundColor(Color.MAGENTA);
        Button pbutton = alert.getButton(DialogInterface.BUTTON_POSITIVE);
        pbutton.setBackgroundColor(Color.YELLOW);
    }
    
    0 讨论(0)
  • 2020-12-29 07:22

    you can overwrite onStart method to get handle of all the buttons (Positive, Negative and Neutral).

    @Override
    public Dialog onCreateDialog(Bundle savedInstanceState) {
        AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
        View eventEditDialogView = View.inflate(this.getActivity(), R.layout.event_edit_dialog,
                                                null);
    
        builder.setTitle(getLocalizedString("edit_event"))
                .setView(eventEditDialogView)
                .setPositiveButton(getLocalizedString("all_events"), new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int id) {
                    }
                })
                .setNegativeButton(getLocalizedString("this_event"), new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int id) {
                    }
                })
        return builder.create();
    }
    
     @Override
        public void onStart() {
            super.onStart();
        Button positive = ((AlertDialog) getDialog()).getButton(AlertDialog.BUTTON_POSITIVE);
        positive.setTextColor(Color.BLACK);
        positive.setBackgroundColor(getResources().getColor(R.color.GrayBGColor));
    }
    
    0 讨论(0)
  • 2020-12-29 07:32
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(),R.style.DialogeTheme);
    

    <style name="DialogeTheme" parent="Theme.AppCompat.Dialog.Alert">
        <item name="android:background">@color/all_item_bg</item>
        <item name="colorAccent">@android:color/white</item>
    </style>
    
    0 讨论(0)
  • 2020-12-29 07:34

    You can use the setOnShowListener method of the AlertDialog to get the buttons and apply a different color and their own listeners, here you have an example in Kotlin:

    val alert : AlertDialog?
    val alertView = LayoutInflater.from(context).inflate(R.layout.alert_add_product, null, false)
    
    val builder = AlertDialog.Builder(context)
        builder.setCancelable(false)
        builder.setView(alertView)
    
        /**Create positive and negative buttons**/
        builder.setPositiveButton(android.R.string.ok, null)
        builder.setNegativeButton(android.R.string.cancel, null)
    
        alert = builder.create()
    
        /**Listener called when the AlertDialog is shown**/
        alert.setOnShowListener {
    
             /**Get the positive button from the AlertDialog**/
             val positiveButton = alert.getButton(DialogInterface.BUTTON_POSITIVE)
    
             /**Set your color to the positive button**/
             positiveButton.setTextColor(ContextCompat.getColor(context, R.color.bluePrimaryDark))
    
             /**Set listener to the positive button**/
             positiveButton.setOnClickListener({
                  alert.dismiss()
             })
    
             /**Get the negative button from the AlertDialog**/
             val negativeButton = alert.getButton(DialogInterface.BUTTON_NEGATIVE)
    
             /**Set your color to the negative button**/
             negativeButton.setTextColor(ContextCompat.getColor(context, R.color.bluePrimaryDark))
    
             /**Set listener to the negative button**/
             negativeButton.setOnClickListener {
                  alert?.dismiss()
             }
        }
    
        alert.show()
    
    0 讨论(0)
  • 2020-12-29 07:40
    //***The simpliest solution is:***
    
    dialog.show(); //Only after .show() was called
    dialog.getButton(dialog.BUTTON_NEGATIVE).setTextColor(neededColor);
    dialog.getButton(dialog.BUTTON_POSITIVE).setTextColor(neededColor);
    
    0 讨论(0)
提交回复
热议问题