Skip to content

Commit fd9be15

Browse files
authored
Merge pull request #3305 from dotnet/main
Merge main into live
2 parents 50075ce + cb718a8 commit fd9be15

19 files changed

Lines changed: 178 additions & 2 deletions

docs/user-interface/material-design.md

Lines changed: 178 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: "Material 3"
33
description: "Learn how to enable Material 3 design on Android in .NET MAUI apps by setting the UseMaterial3 build property to apply modern Material Design theming and components."
4-
ms.date: 01/12/2026
4+
ms.date: 04/13/2026
55
---
66

77
# Material 3
@@ -79,7 +79,183 @@ The following example shows a complete project file with the `UseMaterial3` prop
7979
The `UseMaterial3` build property is specific to the Android platform. It has no effect on other platforms such as iOS, macOS, or Windows. On these platforms, .NET MAUI apps use the native design systems and controls specific to each platform.
8080

8181
> [!NOTE]
82-
> Controls will be migrated to Material 3 in upcoming .NET 10 SR releases.
82+
> Material 3 styling only applies on Android when `UseMaterial3` is set to `true`. Controls on iOS, macOS, and Windows are unaffected.
83+
84+
### Entry
85+
86+
The [Entry](controls/entry.md) control on Android is rendered using Material 3's `TextInputLayout` with an outlined text field when the feature is enabled. The following visual changes apply:
87+
88+
- **Outlined text field**: The entry renders as an outlined box with a visible border, replacing the legacy underline-only `EditText` styling, conforming to the [Material 3 text field specification](https://m3.material.io/components/text-fields/specs).
89+
90+
The following screenshot shows the difference between Material 2 and Material 3.
91+
92+
:::row:::
93+
:::column span="":::
94+
:::image type="content" source="media/material2/entry.png" alt-text="Screenshot of an Entry with Material 2 styling on Android, showing a standard underline text field." lightbox="media/material2/entry.png":::
95+
**Material 2**
96+
:::column-end:::
97+
:::column span="":::
98+
:::image type="content" source="media/material3/entry.png" alt-text="Screenshot of an Entry with Material 3 styling on Android, showing an outlined text field with floating label." lightbox="media/material3/entry.png":::
99+
**Material 3**
100+
:::column-end:::
101+
:::row-end:::
102+
103+
For more information about the underlying Android controls, see [TextInputLayout](https://developer.android.com/reference/com/google/android/material/textfield/TextInputLayout) and [TextInputEditText](https://developer.android.com/reference/com/google/android/material/textfield/TextInputEditText).
104+
105+
### Editor
106+
107+
The [Editor](controls/editor.md) control on Android uses the Material 3 text field when the feature is enabled.
108+
109+
The following screenshot shows the difference between Material 2 and Material 3.
110+
111+
:::row:::
112+
:::column span="":::
113+
:::image type="content" source="media/material2/editor.png" alt-text="Screenshot of an Editor with Material 2 styling on Android." lightbox="media/material2/editor.png":::
114+
**Material 2**
115+
:::column-end:::
116+
:::column span="":::
117+
:::image type="content" source="media/material3/editor.png" alt-text="Screenshot of an Editor with Material 3 styling on Android, showing modern text field design with updated Material 3 color roles and focus states." lightbox="media/material3/editor.png":::
118+
**Material 3**
119+
:::column-end:::
120+
:::row-end:::
121+
122+
For more information about the underlying Android control, see [TextInputEditText](https://developer.android.com/reference/com/google/android/material/textfield/TextInputEditText).
123+
124+
### SearchBar
125+
126+
The [SearchBar](controls/searchbar.md) control on Android uses a Material 3-styled inline text input field. The field includes a leading search icon and a trailing clear button that appears whenever the field contains text. The search field uses Material 3 color tokens that adapt to light and dark themes.
127+
128+
The following screenshot shows the difference between Material 2 and Material 3.
129+
130+
:::row:::
131+
:::column span="":::
132+
:::image type="content" source="media/material2/search-bar.png" alt-text="Screenshot of a SearchBar with Material 2 styling on Android." lightbox="media/material2/search-bar.png":::
133+
**Material 2**
134+
:::column-end:::
135+
:::column span="":::
136+
:::image type="content" source="media/material3/search-bar.png" alt-text="Screenshot of a SearchBar with Material 3 styling on Android, showing a Material 3 filled text field with a leading search icon and trailing clear button." lightbox="media/material3/search-bar.png":::
137+
**Material 3**
138+
:::column-end:::
139+
:::row-end:::
140+
141+
For more information about the underlying Android component, see [SearchBar](https://developer.android.com/reference/com/google/android/material/search/SearchBar).
142+
143+
### RadioButton
144+
145+
The [RadioButton](controls/radiobutton.md) control on Android automatically adopts Material 3 styling when the feature is enabled.
146+
147+
The following screenshot shows the difference between Material 2 and Material 3.
148+
149+
:::row:::
150+
:::column span="":::
151+
:::image type="content" source="media/material2/radio-button.png" alt-text="Screenshot of a RadioButton with Material 2 styling on Android." lightbox="media/material2/radio-button.png":::
152+
**Material 2**
153+
:::column-end:::
154+
:::column span="":::
155+
:::image type="content" source="media/material3/radio-button.png" alt-text="Screenshot of a RadioButton with Material 3 styling on Android, showing updated Material 3 color roles and visual feedback." lightbox="media/material3/radio-button.png":::
156+
**Material 3**
157+
:::column-end:::
158+
:::row-end:::
159+
160+
For more information about the underlying Android control, see [MaterialRadioButton](https://developer.android.com/reference/com/google/android/material/radiobutton/MaterialRadioButton).
161+
162+
### ProgressBar
163+
164+
The [ProgressBar](controls/progressbar.md) control on Android uses the Material 3 linear progress indicator when the feature is enabled.
165+
166+
The following screenshot shows the difference between Material 2 and Material 3.
167+
168+
:::row:::
169+
:::column span="":::
170+
:::image type="content" source="media/material2/progress-bar.png" alt-text="Screenshot of a ProgressBar with Material 2 styling on Android." lightbox="media/material2/progress-bar.png":::
171+
**Material 2**
172+
:::column-end:::
173+
:::column span="":::
174+
:::image type="content" source="media/material3/progress-bar.png" alt-text="Screenshot of a ProgressBar with Material 3 styling on Android, showing the LinearProgressIndicator design with Material 3 color roles." lightbox="media/material3/progress-bar.png":::
175+
**Material 3**
176+
:::column-end:::
177+
:::row-end:::
178+
179+
For more information about the underlying Android control, see [LinearProgressIndicator](https://developer.android.com/reference/com/google/android/material/progressindicator/LinearProgressIndicator).
180+
181+
### Slider
182+
183+
The [Slider](controls/slider.md) control on Android automatically adopts Material 3 styling when the feature is enabled.
184+
185+
The following screenshot shows the difference between Material 2 and Material 3.
186+
187+
:::row:::
188+
:::column span="":::
189+
:::image type="content" source="media/material2/slider.png" alt-text="Screenshot of a Slider with Material 2 styling on Android, showing a standard slider with default track and thumb." lightbox="media/material2/slider.png":::
190+
**Material 2**
191+
:::column-end:::
192+
:::column span="":::
193+
:::image type="content" source="media/material3/slider.png" alt-text="Screenshot of a Slider with Material 3 styling on Android, showing a slider with updated track and thumb conforming to Material You design." lightbox="media/material3/slider.png":::
194+
**Material 3**
195+
:::column-end:::
196+
:::row-end:::
197+
198+
For more information about the underlying Android control, see [Material Slider](https://developer.android.com/reference/com/google/android/material/slider/Slider).
199+
200+
### Picker
201+
202+
The [Picker](controls/picker.md) control on Android uses the Material 3 picker when the feature is enabled.
203+
204+
The following screenshot shows the difference between Material 2 and Material 3.
205+
206+
:::row:::
207+
:::column span="":::
208+
:::image type="content" source="media/material2/picker.png" alt-text="Screenshot of a Picker with Material 2 styling on Android." lightbox="media/material2/picker.png":::
209+
**Material 2**
210+
:::column-end:::
211+
:::column span="":::
212+
:::image type="content" source="media/material3/picker.png" alt-text="Screenshot of a Picker with Material 3 styling on Android, showing updated dialog design and Material 3 color roles." lightbox="media/material3/picker.png":::
213+
**Material 3**
214+
:::column-end:::
215+
:::row-end:::
216+
217+
For more information about the underlying Android controls, see [TextInputEditText](https://developer.android.com/reference/com/google/android/material/textfield/TextInputEditText) and [MaterialAlertDialogBuilder](https://developer.android.com/reference/com/google/android/material/dialog/MaterialAlertDialogBuilder).
218+
219+
### TimePicker
220+
221+
The [TimePicker](controls/timepicker.md) control on Android uses the Material 3 time picker dialog when the feature is enabled.
222+
223+
The following screenshot shows the difference between Material 2 and Material 3.
224+
225+
:::row:::
226+
:::column span="":::
227+
:::image type="content" source="media/material2/time-picker.png" alt-text="Screenshot of a TimePicker with Material 2 styling on Android, showing the legacy clock dial time picker dialog." lightbox="media/material2/time-picker.png":::
228+
**Material 2**
229+
:::column-end:::
230+
:::column span="":::
231+
:::image type="content" source="media/material3/time-picker.png" alt-text="Screenshot of a TimePicker with Material 3 styling on Android, showing a clock dial time picker dialog with Material You color scheme." lightbox="media/material3/time-picker.png":::
232+
**Material 3**
233+
:::column-end:::
234+
:::row-end:::
235+
236+
For more information about the underlying Android control, see [MaterialTimePicker](https://developer.android.com/reference/com/google/android/material/timepicker/MaterialTimePicker).
237+
238+
### DatePicker
239+
240+
The [DatePicker](controls/datepicker.md) control on Android replaces the system date picker dialog with Google's Material 3 `MaterialDatePicker` full-screen calendar overlay when the feature is enabled. The dialog always opens in calendar mode and uses Material 3 color tokens that adapt to light and dark themes. `MinimumDate` and `MaximumDate` are applied as immutable calendar constraints each time the dialog is opened.
241+
242+
The following screenshot shows the difference between Material 2 and Material 3.
243+
244+
:::row:::
245+
:::column span="":::
246+
:::image type="content" source="media/material2/date-picker.png" alt-text="Screenshot of a DatePicker with Material 2 styling on Android, showing the legacy spinner-style calendar dialog." lightbox="media/material2/date-picker.png":::
247+
**Material 2**
248+
:::column-end:::
249+
:::column span="":::
250+
:::image type="content" source="media/material3/date-picker.png" alt-text="Screenshot of a DatePicker with Material 3 styling on Android, showing the Material DatePicker calendar dialog with Material You color scheme." lightbox="media/material3/date-picker.png":::
251+
**Material 3**
252+
:::column-end:::
253+
:::row-end:::
254+
255+
> [!IMPORTANT]
256+
> `MinimumDate` and `MaximumDate` cannot be updated dynamically while the date picker dialog is open. Calendar constraints are immutable after the dialog is built and are re-applied fresh each time the dialog is shown.
257+
258+
For more information about the underlying Android component, see [MaterialDatePicker](https://developer.android.com/reference/com/google/android/material/datepicker/MaterialDatePicker).
83259

84260
## Considerations
85261

88.8 KB
Loading
9.77 KB
Loading
7.63 KB
Loading
53.1 KB
Loading
6.28 KB
Loading
16.7 KB
Loading
13.5 KB
Loading
2.13 KB
Loading
77.7 KB
Loading

0 commit comments

Comments
 (0)