Appearance
Dialogs
Dialogs inform users about a task and can contain critical information, require decisions, or involve multiple tasks.

Contents
Design and API Documentation
Using dialogs
Before you can use Material dialogs, you need to add a dependency to the Material Components for Android library. For more information, go to the Getting started page.
kt
MaterialAlertDialogBuilder(context)
// Add customization options here
.show()Making dialogs accessible
The contents within a dialog should follow their own accessibility guidelines, such as an icon on a title having a content description via the android:contentDescription attribute set in the MaterialAlertDialog.Material3.Title.Icon style or descendant.
Types
There are two types of dialogs: 1. Basic dialog, 2. Full-screen dialog

Dialogs
A dialog is a type of modal window that appears in front of app content to provide critical information or ask for a decision. Dialogs disable all app functionality when they appear, and remain on screen until confirmed, dismissed, or a required action has been taken.
Dialogs are purposefully interruptive, so they should be used sparingly.
Dialog examples
API and source code:
MaterialAlertDialogBuilder
Basic dialog
The following example shows a basic dialog.

In code:
kt
MaterialAlertDialogBuilder(context)
.setTitle(resources.getString(R.string.title))
.setMessage(resources.getString(R.string.supporting_text))
.setNeutralButton(resources.getString(R.string.cancel)) { dialog, which ->
// Respond to neutral button press
}
.setNegativeButton(resources.getString(R.string.decline)) { dialog, which ->
// Respond to negative button press
}
.setPositiveButton(resources.getString(R.string.accept)) { dialog, which ->
// Respond to positive button press
}
.show()Full-screen dialog
Full-screen dialogs group a series of tasks, such as creating a calendar entry with the event title, date, location, and time. Because they take up the entire screen, full-screen dialogs are the only dialogs over which other dialogs can appear.
There is no specific Material implementation of a full-screen dialog. You can implement it by using a DialogFragment as explained in the Android Developer guides.
Anatomy and key properties
A dialog has a container, content (either supporting text or a set of items of a particular type), a background scrim, and, optionally, title and buttons.

- Container
- Icon (optional)
- Title (optional)
- Content
- Buttons (optional)
- Scrim
Container attributes
| Element | Attribute | Related methods | Default value |
|---|---|---|---|
| Color | app:backgroundTint | N/A | ?attr/colorSurfaceContainerHigh |
| Shape | app:shapeAppearanceapp:shapeAppearanceOverlay | N/A | ?attr/shapeAppearanceCornerExtraLarge |
| Background inset start and end | app:backgroundInsetStartapp:backgroundInsetEnd | setBackgroundInsetStartsetBackgroundInsetEnd | 24dp |
| Background inset top and bottom | app:backgroundInsetTopapp:backgroundInsetBottom | setBackgroundInsetTopsetBackgroundInsetBottom | 80dp |
Title attributes
| Element | Attribute | Related methods | Default value |
|---|---|---|---|
| Text label | N/A | setTitlesetCustomTitle | null |
| Text color | android:textColor | N/A | ?attr/colorOnSurface |
| Typography | android:textAppearance | N/A | ?attr/textAppearanceHeadlineSmall |
| Icon | N/A | setIconsetIconAttribute | null |
| Icon tint | app:tint | N/A | ?attr/colorSecondary |
Content attributes
Supporting text
| Element | Attribute | Related methods | Default value |
|---|---|---|---|
| Text | N/A | setMessage | null |
| Color | android:textColor | N/A | ?attr/colorOnSurfaceVariant |
| Typography | android:textAppearance | N/A | ?attr/textAppearanceBodyMedium |
List item
| Element | Attribute | Related methods | Default value |
|---|---|---|---|
| List item layout | app:listItemLayout | setItems | @layout/mtrl_alert_select_dialog_item |
| List item layout style | N/A | N/A | ?attr/materialAlertDialogBodyTextStyle |
| List item text color | android:textColor | N/A | ?attr/colorOnSurfaceVariant |
| List item typography | android:textAppearance | N/A | ?attr/textAppearanceBodyMedium |
| Multi choice item layout | app:multiChoiceItemLayout | setMultiChoiceItems | @layout/mtrl_alert_select_dialog_multichoice |
| Single choice item layout | app:singleChoiceItemLayout | setSingleChoiceItems | @layout/mtrl_alert_select_dialog_singlechoice |
| Multi/single choice item style | android:checkedTextViewStyle | N/A | @style/Widget.Material3.CheckedTextView |
| Multi/single choice item text color | android:textColor | N/A | ?attr/colorOnSurfaceVariant |
| Multi/single choice item typography | android:textAppearance | N/A | ?attr/textAppearanceBodyLarge |
Note: You can set any custom view to be the content of your dialog via the setView method.
Buttons attributes
| Element | Attribute | Related methods | Default value |
|---|---|---|---|
| Buttons theme attributes (negative/positive) | app:buttonBar*ButtonStyle | N/A | @style/Widget.Material3.Button.TextButton.Dialog |
| Buttons theme attributes (neutral) | app:buttonBarNeutralButtonStyle | N/A | @style/Widget.Material3.Button.TextButton.Dialog.Flush |
| Buttons (neutral/negative/positive) | N/A | set*Button | null |
| Icons | N/A | set*ButtonIcon | null |
For specific button attributes, see the Buttons documentation.
Scrim attributes
| Element | Attribute | Related methods | Default value |
|---|---|---|---|
| Dim amount | android:backgroundDimAmount | N/A | 32% |
Theme overlays
| Element | Theme overlay | Description |
|---|---|---|
| Default theme overlay | ThemeOverlay.Material3.MaterialAlertDialog | Dialogs have start-aligned icons and titles with end-aligned buttons |
| Centered theme overlay | ThemeOverlay.Material3.MaterialAlertDialog.Centered | Dialogs have center-aligned icons and titles with end-aligned buttons |
Default theme overlay attribute: ?attr/materialAlertDialogTheme
Theme attributes
| Element | Theme attribute | Default value |
|---|---|---|
| Default style | ?attr/alertDialogStyle | @style/MaterialAlertDialog.Material3 |
| Title text style | ?attr/materialAlertDialogTitleTextStyle | @style/MaterialAlertDialog.Material3.Title.Text |
| Supporting text style | ?attr/materialAlertDialogBodyTextStyle | @style/MaterialAlertDialog.Material3.Body.Text |
See full list of styles, attributes, and theme overlays.
Theming dialogs
A dialog supports Material Theming which can customize color, typography and shape.
Dialog theming example
API and source code:
MaterialAlertDialogBuilder
The following example shows a dialog with Material Theming.

Implementing dialog theming
Setting the theme attribute materialAlertDialogTheme to your custom ThemeOverlay will affect all dialogs.
In res/values/themes.xml:
xml
<style name="Theme.App" parent="Theme.Material3.*">
...
<item name="materialAlertDialogTheme">@style/ThemeOverlay.App.MaterialAlertDialog</item>
</style>
<style name="ThemeOverlay.App.MaterialAlertDialog" parent="ThemeOverlay.Material3.MaterialAlertDialog">
<item name="colorPrimary">@color/shrine_pink_100</item>
<item name="colorSecondary">@color/shrine_pink_100</item>
<item name="colorSurface">@color/shrine_pink_light</item>
<item name="colorOnSurface">@color/shrine_pink_900</item>
<item name="alertDialogStyle">@style/MaterialAlertDialog.App</item>
<item name="materialAlertDialogTitleTextStyle">@style/MaterialAlertDialog.App.Title.Text</item>
<item name="buttonBarPositiveButtonStyle">@style/Widget.App.Button</item>
<item name="buttonBarNegativeButtonStyle">@style/Widget.App.Button</item>
</style>In res/values/styles.xml:
xml
<style name="MaterialAlertDialog.App" parent="MaterialAlertDialog.Material3">
<item name="shapeAppearance">@style/ShapeAppearance.App.MediumComponent</item>
<item name="shapeAppearanceOverlay">@null</item>
</style>
<style name="MaterialAlertDialog.App.Title.Text" parent="MaterialAlertDialog.Material3.Title.Text">
<item name="android:textColor">@color/shrine_pink_900</item>
</style>
<style name="Widget.App.Button" parent="Widget.Material3.Button.TextButton.Dialog">
<item name="android:textColor">@color/shrine_pink_900</item>
</style>
<style name="ShapeAppearance.App.MediumComponent" parent="ShapeAppearance.Material3.MediumComponent">
<item name="cornerFamily">cut</item>
<item name="cornerSize">8dp</item>
</style>Or if you want to change only one specific dialog, pass the themeResId to the constructor:
kt
MaterialAlertDialogBuilder(context, R.style.ThemeOverlay_App_MaterialAlertDialog)
...
.show()