How to change theme for AlertDialog How to change theme for AlertDialog android android

How to change theme for AlertDialog


In Dialog.java (Android src) a ContextThemeWrapper is used. So you could copy the idea and do something like:

AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.AlertDialogCustom));

And then style it like you want:

<?xml version="1.0" encoding="utf-8"?><resources>    <style name="AlertDialogCustom" parent="@android:style/Theme.Dialog">        <item name="android:textColor">#00FF00</item>        <item name="android:typeface">monospace</item>        <item name="android:textSize">10sp</item>    </style></resources>


I was having this AlertDialog theme related issue using sdk 1.6 as described here: http://markmail.org/message/mj5ut56irkrkc4nr

I solved the issue by doing the following:

  new AlertDialog.Builder(  new ContextThemeWrapper(context, android.R.style.Theme_Dialog))

Hope this helps.


I have written an article in my blog on how to configure the layout of an AlertDialog with XML style files. The main problem is that you need different style definitions for different layout parameters. Here is a boilerplate based on the AlertDialog style of Holo Light Platform version 19 for a style file that should cover a bunch of the standard layout aspects like text sizes and background colors.

<style name="AppBaseTheme" parent="android:Theme.Holo.Light">    ...    <item name="android:alertDialogTheme">@style/MyAlertDialogTheme</item>    <item name="android:alertDialogStyle">@style/MyAlertDialogStyle</item>    ...</style><style name="MyBorderlessButton">    <!-- Set background drawable and text size of the buttons here -->    <item name="android:background">...</item>    <item name="android:textSize">...</item></style><style name="MyButtonBar">    <!-- Define a background for the button bar and a divider between the buttons here -->    <item name="android:divider">....</item>    <item name="android:dividerPadding">...</item>    <item name="android:showDividers">...</item>    <item name="android:background">...</item></style><style name="MyAlertDialogTitle">    <item name="android:maxLines">1</item>    <item name="android:scrollHorizontally">true</item></style><style name="MyAlertTextAppearance">    <!-- Set text size and color of title and message here -->    <item name="android:textSize"> ... </item>    <item name="android:textColor">...</item></style><style name="MyAlertDialogTheme">    <item name="android:windowBackground">@android:color/transparent</item>    <item name="android:windowTitleStyle">@style/MyAlertDialogTitle</item>    <item name="android:windowContentOverlay">@null</item>    <item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>    <item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>    <item name="android:windowIsFloating">true</item>    <item name="android:textAppearanceMedium">@style/MyAlertTextAppearance</item>    <!-- If you don't want your own button bar style use            @android:style/Holo.Light.ButtonBar.AlertDialog            and            ?android:attr/borderlessButtonStyle         instead of @style/MyButtonBar and @style/MyBorderlessButton -->    <item name="android:buttonBarStyle">@style/MyButtonBar</item>    <item name="android:buttonBarButtonStyle">@style/MyBorderlessButton</item></style><style name="MyAlertDialogStyle">    <!-- Define background colors of title, message, buttons, etc. here -->    <item name="android:fullDark">...</item>    <item name="android:topDark">...</item>    <item name="android:centerDark">...</item>    <item name="android:bottomDark">...</item>    <item name="android:fullBright">...</item>    <item name="android:topBright">...</item>    <item name="android:centerBright">...</item>    <item name="android:bottomBright">...</item>    <item name="android:bottomMedium">...</item>    <item name="android:centerMedium">...</item></style>