[Android] Implemented UseMaterial3 build property and provided basic M3 styles
#33074
+304
−1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description of Change
This pull request introduces the foundation for Material Design 3 (M3) support in .NET MAUI for Android. The changes allow developers to opt into Material Design 3 via a new MSBuild property, provide runtime detection of the Material version, and add the necessary Android resources and styles for M3. By default, apps continue to use Material Design 2 to maintain backward compatibility.
Material Design 3 opt-in and configuration:
UseMaterial3(default: false) to allow developers to opt into Material Design 3 for Android. Internal build properties are set based on this value, and a build log message informs developers which Material version is active. (Microsoft.Maui.Controls.Common.targets) [1] [2]Microsoft.Maui.RuntimeFeature.IsMaterial3Enabled), which is set during the build process ifUseMaterial3is specified. (Microsoft.Maui.Controls.targets,RuntimeFeature.cs) [1] [2] [3]Runtime and theming support:
MaterialDesignHelperfor runtime detection of Material Design 3 enablement, with caching for performance and a method to retrieve the current Material version. (MaterialDesignHelper.cs)MauiMaterialContextThemeWrapperto dynamically select the correct base theme (Material 2 or Material 3) at runtime using the new helper. (MauiMaterialContextThemeWrapper.cs)Android resource additions for Material Design 3:
colors-material3.xml)styles-material3.xml)Issues Fixed
Fixes #33073