How to change dialog background color programmatically? How to change dialog background color programmatically? android android

How to change dialog background color programmatically?


I found a one rule solution!

d.getWindow().setBackgroundDrawableResource(R.drawable.menubackground);

It works for me with a normal dialog.But I dont know if it works on an AlertDialog.


I kinda faced the same problem. And the only way to solve it was extending my own version of layout. I see that in your case it is an AlertDialog. What I recommend you to do, is to create a unique class, that is your customized AlertDialog and create a layout for this, and then you inflate this.

Here is a post that helped me a lot. http://blog.androgames.net/10/custom-android-dialog/

I followed this post and solved my problem with customizing dialogs.

Please, if you have more doubts, let me know.

Thanks.


I have found a hack, without creating custom layout you can create multiple designs by playing with some properties of AlertDialog.

What you have to do:

When AlertDialog is visible on your screen, OnShowListener is called. So, by adding dialog.setOnShowListener(this) you will be able to customize your AlertDialog.

Code:

// Create AlertDialogAlertDialog.Builder adb = new AlertDialog.Builder(context1);    adb.setTitle(context1.getString(R.string.app_name))    .setMessage(message)    .setPositiveButton("Ok", new DialogInterface.OnClickListener() {        @Override        public void onClick(DialogInterface dialog, int which) {        }});AlertDialog dialog = adb.create();// Make some UI changes for AlertDialogdialog.setOnShowListener(new DialogInterface.OnShowListener() {    @Override    public void onShow(final DialogInterface dialog) {        // Add or create your own background drawable for AlertDialog window        Window view = ((AlertDialog)dialog).getWindow();        view.setBackgroundDrawableResource(R.drawable.your_drawable);        // Customize POSITIVE, NEGATIVE and NEUTRAL buttons.        Button positiveButton = ((AlertDialog)dialog).getButton(DialogInterface.BUTTON_POSITIVE);        positiveButton.setTextColor(context1.getResources().getColor(R.color.primaryColor));        positiveButton.setTypeface(Typeface.DEFAULT_BOLD);        positiveButton.invalidate();        Button negativeButton = ((AlertDialog)dialog).getButton(DialogInterface.BUTTON_NEGATIVE);        negativeButton.setTextColor(context1.getResources().getColor(R.color.primaryColor));        negativeButton.setTypeface(Typeface.DEFAULT_BOLD);        negativeButton.invalidate();        Button neutralButton = ((AlertDialog)dialog).getButton(DialogInterface.BUTTON_NEUTRAL);        neutralButton.setTextColor(context1.getResources().getColor(R.color.primaryColor));        neutralButton.setTypeface(Typeface.DEFAULT_BOLD);        neutralButton.invalidate();    }});