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 addingdialog.setOnShowListener(this)
you will be able to customize yourAlertDialog
.
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(); }});