Skip to content

[Material3] Expose Material Handlers and Helpers as Public#35323

Merged
jfversluis merged 1 commit into
dotnet:net11.0from
Dhivya-SF4094:fix-35124
May 12, 2026
Merged

[Material3] Expose Material Handlers and Helpers as Public#35323
jfversluis merged 1 commit into
dotnet:net11.0from
Dhivya-SF4094:fix-35124

Conversation

@Dhivya-SF4094

@Dhivya-SF4094 Dhivya-SF4094 commented May 6, 2026

Copy link
Copy Markdown
Contributor

Note

Are you waiting for the changes in this PR to be merged?
It would be very helpful if you could test the resulting artifacts from this PR and let us know in a comment if this change resolves your issue. Thank you!

Descripton of Change

This pull request makes a set of Material 3 controls and related handler classes public, transitioning them from internal to public API. This is part of the planned public API exposure for .NET 11, allowing developers to directly use and extend these Material 3 controls and handlers in their Android applications.

Fixes #35124

Material 3 Handler and Control Classes Now Public:

  • Made the following handler classes public: ActivityIndicatorHandler2, DatePickerHandler2, EditorHandler2, EntryHandler2, ImageHandler2, LabelHandler2, PickerHandler2, ProgressBarHandler2, RadioButtonHandler2, SearchBarHandler2, SliderHandler2, SwitchHandler2, TimePickerHandler2
  • Made related listener classes public: MaterialDatePickerPositiveButtonClickListener, MaterialDatePickerDismissListener, MaterialTimePickerPositiveButtonClickListener, MaterialTimePickerDismissListener.
  • Made Material 3 platform controls public: MauiMaterialDatePicker, MauiMaterialEditText, MauiMaterialTextInputLayout.

Public API Surface Updates:

  • Updated PublicAPI.Unshipped.txt to include the newly public methods on Editor, Entry, and SearchBar.

Mapping and Extension Methods Now Public:

  • Changed several mapping methods from internal to public so they can be used externally, including MapText and MapImeOptions for EditorHandler2, EntryHandler2, and SearchBarHandler2.
  • Made extension methods for MauiMaterialDatePicker public: UpdateDate, UpdateFormat, and UpdateTextColor.

These changes collectively make Material 3 controls and handlers available for public use and extension, as planned for .NET 11.

@github-actions

github-actions Bot commented May 6, 2026

Copy link
Copy Markdown
Contributor

🚀 Dogfood this PR with:

⚠️ WARNING: Do not do this without first carefully reviewing the code of this PR to satisfy yourself it is safe.

curl -fsSL https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.sh | bash -s -- 35323

Or

  • Run remotely in PowerShell:
iex "& { $(irm https://raw.githubusercontent.com/dotnet/maui/main/eng/scripts/get-maui-pr.ps1) } 35323"

@dotnet-policy-service dotnet-policy-service Bot added the partner/syncfusion Issues / PR's with Syncfusion collaboration label May 6, 2026
@sheiksyedm sheiksyedm added this to the .NET 11.0-preview4 milestone May 6, 2026
@sheiksyedm sheiksyedm marked this pull request as ready for review May 6, 2026 10:24
Copilot AI review requested due to automatic review settings May 6, 2026 10:24

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR exposes the Android Material 3 (“Handler2”) handler types, related platform controls, and helper/extension APIs as public surface area to enable downstream customization and extension scenarios (per #35124 / .NET 11 planning).

Changes:

  • Changed a set of Material3 handler types (e.g., *Handler2) and related listener classes from internal to public.
  • Changed several Android platform controls (MauiMaterial*) and Android helper/extension methods (Picker/SearchBar/Switch/DatePicker/TimePicker) from internal to public.
  • Updated PublicAPI.Unshipped.txt entries for both Core and Controls Android TFMs to reflect the newly-public APIs.

Reviewed changes

Copilot reviewed 31 out of 31 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/Core/src/PublicAPI/net-android/PublicAPI.Unshipped.txt Declares newly-public Android Core APIs (Material3 handlers, platform controls, and helper methods).
src/Core/src/Platform/Android/TimePickerExtensions.cs Makes Material3 MauiMaterialTimePicker extension methods public.
src/Core/src/Platform/Android/SwitchExtensions.cs Makes Material3 MaterialSwitch thumb/track color helpers public.
src/Core/src/Platform/Android/SearchViewExtensions.cs Makes Material3 SearchBar-related extension helpers public.
src/Core/src/Platform/Android/PickerExtensions.cs Makes Material3 picker helper/“core” extension methods public.
src/Core/src/Platform/Android/MauiMaterialTimePicker.cs Makes MauiMaterialTimePicker public.
src/Core/src/Platform/Android/MauiMaterialSearchBarTextInputLayout.cs Makes Material3 SearchBar TextInputLayout and TextInputEditText public.
src/Core/src/Platform/Android/MauiMaterialContextThemeWrapper.cs Makes MauiMaterialContextThemeWrapper public to support external theming usage.
src/Core/src/Platform/Android/MaterialActivityIndicator.cs Makes MaterialActivityIndicator public.
src/Core/src/Platform/Android/Material3Controls/MauiMaterialTextView.cs Makes MauiMaterialTextView public.
src/Core/src/Platform/Android/Material3Controls/MauiMaterialPicker.cs Makes MauiMaterialPicker / MauiMaterialPickerBase public.
src/Core/src/Platform/Android/Material3Controls/MauiMaterialEditText.cs Makes MauiMaterialEditText / MauiMaterialTextInputLayout public.
src/Core/src/Platform/Android/Material3Controls/MauiMaterialDatePicker.cs Makes MauiMaterialDatePicker public.
src/Core/src/Platform/Android/DatePickerExtensions.cs Makes Material3 MauiMaterialDatePicker extension methods public.
src/Core/src/Handlers/TimePicker/TimePickerHandler2.Android.cs Makes TimePickerHandler2 and its listener types public.
src/Core/src/Handlers/Switch/SwitchHandler2.Android.cs Makes SwitchHandler2 public.
src/Core/src/Handlers/Slider/SliderHandler2.Android.cs Makes SliderHandler2 public.
src/Core/src/Handlers/SearchBar/SearchBarHandler2.Android.cs Makes SearchBarHandler2 public.
src/Core/src/Handlers/RadioButton/RadioButtonHandler2.Android.cs Makes RadioButtonHandler2 public.
src/Core/src/Handlers/ProgressBar/ProgressBarHandler2.Android.cs Makes ProgressBarHandler2 public.
src/Core/src/Handlers/Picker/PickerHandler2.Android.cs Makes PickerHandler2 public.
src/Core/src/Handlers/Label/LabelHandler.Android.cs Makes LabelHandler2 public.
src/Core/src/Handlers/Image/ImageHandler2.Android.cs Makes ImageHandler2 public.
src/Core/src/Handlers/Entry/EntryHandler2.Android.cs Makes EntryHandler2 public.
src/Core/src/Handlers/Editor/EditorHandler2.Android.cs Makes EditorHandler2 public.
src/Core/src/Handlers/DatePicker/DatePickerHandler2.Android.cs Makes DatePickerHandler2 and its listener types public.
src/Core/src/Handlers/ActivityIndicator/ActivityIndicatorHandler.Android.cs Makes ActivityIndicatorHandler2 public.
src/Controls/src/Core/SearchBar/SearchBar.Android.cs Makes the Material3 SearchBarHandler2 overload mapper public.
src/Controls/src/Core/PublicAPI/net-android/PublicAPI.Unshipped.txt Declares newly-public Controls Android APIs for the new public mappers.
src/Controls/src/Core/Entry/Entry.Android.cs Makes EntryHandler2-specific mapper overloads public.
src/Controls/src/Core/Editor/Editor.Android.cs Makes EditorHandler2-specific mapper overload public.

Comment thread src/Core/src/Platform/Android/SearchViewExtensions.cs
@dotnet dotnet deleted a comment from MauiBot May 6, 2026
@dotnet dotnet deleted a comment from MauiBot May 7, 2026
@dotnet dotnet deleted a comment from MauiBot May 7, 2026
@dotnet dotnet deleted a comment from MauiBot May 12, 2026
@dotnet dotnet deleted a comment from MauiBot May 12, 2026
@jfversluis jfversluis merged commit 562b5a6 into dotnet:net11.0 May 12, 2026
41 checks passed
@PureWeen PureWeen added the area-controls-general General issues that span multiple controls, or common base classes such as View or Element label Jun 10, 2026
jfversluis added a commit to dotnet/docs-maui that referenced this pull request Jun 12, 2026
* Document public Material 3 helper types in .NET MAUI 11

Adds a "Customize Material 3 controls" section that enumerates the
Microsoft.Maui.Platform Material 3 helper types now exposed as public
in .NET MAUI 11 (MauiMaterialEditText, MauiMaterialPicker,
MauiMaterialDatePicker, MauiMaterialTimePicker, MauiMaterialTextView,
MauiMaterialSearchBarTextInputLayout, MaterialActivityIndicator,
MauiMaterialContextThemeWrapper). Includes a handler-customization
example that subclasses MauiMaterialEditText for Entry.

Tracks dotnet/maui#35323 and aligns with the .NET 11 Preview 5
release notes published in dotnet/core#10433.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

* Fix Material 3 validation xrefs

Replace unresolved xrefs for newly public .NET 11 Material 3 helper and Handler2 types with code spans so OPS validation doesn't warn before the API reference includes them.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Andy (Steve) De George <67293991+adegeo@users.noreply.github.com>
Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-controls-general General issues that span multiple controls, or common base classes such as View or Element community ✨ Community Contribution material3 partner/syncfusion Issues / PR's with Syncfusion collaboration platform/android t/breaking 💥

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants