Skip to content

[Android] Implemented material3 support for RadioButton #33468

Merged
jfversluis merged 10 commits intodotnet:inflight/currentfrom
SyedAbdulAzeemSF4852:material3-radiobutton
Feb 27, 2026
Merged

[Android] Implemented material3 support for RadioButton #33468
jfversluis merged 10 commits intodotnet:inflight/currentfrom
SyedAbdulAzeemSF4852:material3-radiobutton

Conversation

@SyedAbdulAzeemSF4852
Copy link
Copy Markdown
Contributor

Description of Change

This pull request introduces support for Material Design 3 radio buttons on Android, making the radio button UI consistent with the latest Material guidelines when the Material3 feature is enabled. The changes ensure that the appropriate handler is used depending on the runtime feature flag.

Android Material Design 3 support:

  • Conditional registration of radio button handlers in AppHostBuilderExtensions.cs, using MaterialRadioButtonHandler when Material3 is enabled, and falling back to the default RadioButtonHandler otherwise.
  • Removal of the unconditional registration of the default RadioButtonHandler to prevent duplicate handler assignments.

Handler implementation:

  • Addition of the new MaterialRadioButtonHandler class in RadioButtonHandler.Android.cs, which creates a MaterialRadioButton platform view with the correct theme wrapper and disables sound effects for consistency.

Material Design Spec : RadioButton

Issues Fixed

Fixes #33467

Output

Material2 Material3

@dotnet-policy-service dotnet-policy-service bot added the community ✨ Community Contribution label Jan 12, 2026
@dotnet-policy-service
Copy link
Copy Markdown
Contributor

Hey there @@SyedAbdulAzeemSF4852! Thank you so much for your PR! Someone from the team will get assigned to your PR shortly and we'll get it reviewed.

@dotnet-policy-service dotnet-policy-service bot added the partner/syncfusion Issues / PR's with Syncfusion collaboration label Jan 12, 2026
@sheiksyedm sheiksyedm marked this pull request as ready for review January 12, 2026 08:49
Copilot AI review requested due to automatic review settings January 12, 2026 08:49
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

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 implements Material Design 3 support for RadioButton on Android, making the radio button UI consistent with Material3 guidelines when the runtime feature is enabled. The implementation conditionally registers the appropriate handler based on the RuntimeFeature.IsMaterial3Enabled flag.

Changes:

  • Added MaterialRadioButtonHandler class that creates MaterialRadioButton platform views with proper Material3 theming
  • Implemented conditional handler registration in AppHostBuilderExtensions.cs to use Material3 handler when feature is enabled
  • Removed unconditional RadioButton handler registration to prevent duplicate assignments

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
src/Core/src/Handlers/RadioButton/RadioButtonHandler.Android.cs Added MaterialRadioButtonHandler class that extends RadioButtonHandler and creates MaterialRadioButton with Material3 theming
src/Controls/src/Core/Hosting/AppHostBuilderExtensions.cs Added conditional handler registration for Android using RuntimeFeature.IsMaterial3Enabled flag; removed duplicate unconditional registration

@rmarinho
Copy link
Copy Markdown
Member

rmarinho commented Feb 18, 2026

🤖 AI Summary

📊 Expand Full Review
🔍 Pre-Flight — Context & Validation
📝 Review SessionRefactored handler into a separate file · 99cb1d0

Issue: #33467 - Implement Material3 Support for RadioButton
PR: #33468 - [Android] Implemented material3 support for RadioButton
Author: SyedAbdulAzeemSF4852 (Syncfusion partner)
Platforms Affected: Android only
Files Changed: 2 implementation files, 0 test files

Issue Summary

When the UseMaterial3 MSBuild property is enabled, the RadioButton control should adopt the Material 3 visual design system. The current implementation does not use Material 3 styling (colors, state behaviors, Material 3 resources) when this flag is enabled.

PR Summary

The PR introduces a new RadioButtonHandler2 (internal, Android-only) that creates a MaterialRadioButton using the MauiMaterialContextThemeWrapper. It conditionally registers this handler in AppHostBuilderExtensions.cs based on RuntimeFeature.IsMaterial3Enabled, following the same pattern used by other Material3-enabled controls.

Files Changed

File Change Purpose
src/Controls/src/Core/Hosting/AppHostBuilderExtensions.cs +12/-1 Conditional handler registration based on Material3 feature flag
src/Core/src/Handlers/RadioButton/RadioButtonHandler2.Android.cs +15/0 (new) New Material3 RadioButton handler

Key Technical Notes

  • RadioButtonHandler2 extends RadioButtonHandler and overrides CreatePlatformView() to return MaterialRadioButton
  • Uses MauiMaterialContextThemeWrapper.Create(Context) — same pattern as CheckBoxExtensions.cs
  • SoundEffectsEnabled = false for consistency (same as other Material3 handlers)
  • TODO comment: // TODO: Material3 - make it public in .net 11 (class is internal)
  • New file RadioButtonHandler2.Android.cs is missing a newline at end of file
  • The PR moves the unconditional RadioButtonHandler registration from line ~120 into the Android #if block

PR Discussion

  • Only 1 comment from dotnet-policy-service[bot] (automated PR acknowledgement)
  • No reviewer feedback yet
  • No prior agent reviews

Fix Candidates

# Source Approach Test Result Files Changed Notes
PR PR #33468 Add RadioButtonHandler2 (Android) overriding CreatePlatformView with MaterialRadioButton; conditionally register in AppHostBuilderExtensions ⏳ PENDING (Gate) AppHostBuilderExtensions.cs, RadioButtonHandler2.Android.cs Original PR

🚦 Gate — Test Verification
📝 Review SessionRefactored handler into a separate file · 99cb1d0

Result: ❌ FAILED - No tests exist
Platform: android
Mode: N/A - Tests missing

Findings

  • No test files found matching Issue33467 or Issue33468 in TestCases.HostApp or TestCases.Shared.Tests
  • The PR introduces a new enhancement (Material3 RadioButton support) with no accompanying tests
  • Gate cannot run without tests to verify

Action Required

Tests are missing. The PR author or contributor should use write-tests-agent to create UI tests that verify:

  1. When Material3 is enabled, RadioButton uses MaterialRadioButton as the platform view (Android)
  2. Visual appearance matches Material3 styling

🔧 Fix — Analysis & Comparison
📝 Review SessionRefactored handler into a separate file · 99cb1d0

Fix Candidates

# Source Approach Test Result Files Changed Notes
PR PR #33468 Add RadioButtonHandler2 (Android) with MaterialRadioButton; conditionally register based on IsMaterial3Enabled ⏳ PENDING (no tests) AppHostBuilderExtensions.cs, RadioButtonHandler2.Android.cs Original PR

Exhausted: N/A — Gate did not pass (no tests exist)
Selected Fix: N/A — Cannot validate without tests
Phase Skipped: Phase 3 (try-fix) skipped because Gate did not pass


📋 Report — Final Recommendation
📝 Review SessionRefactored handler into a separate file · 99cb1d0

⚠️ Final Recommendation: REQUEST CHANGES

Summary

PR #33468 adds Material3 support for RadioButton on Android by introducing a new RadioButtonHandler2 that creates a MaterialRadioButton via MauiMaterialContextThemeWrapper. The approach is architecturally sound and follows existing patterns. However, the PR is missing UI tests, and Gate could not be verified.

Root Cause (Issue #33467)

When UseMaterial3 is enabled, the RadioButton used AppCompatRadioButton instead of the Material3-styled MaterialRadioButton. The fix conditionally registers a new handler (RadioButtonHandler2) that overrides CreatePlatformView() to return a MaterialRadioButton.

Gate Status

FAILED — No UI tests found for Issue #33467 or #33468. The verify-tests-fail-without-fix skill could not run. Phase 3 (try-fix) was skipped as a result.

Code Review Findings

✅ Strengths:

  • Handler pattern mirrors how MauiMaterialContextThemeWrapper is used in CheckBoxHandler.Android.cs
  • Correct use of #if ANDROID guard to ensure non-Android platforms still use the default handler
  • Removes the duplicate (unconditional) RadioButtonHandler registration correctly
  • SoundEffectsEnabled = false is consistent with other Material3 handlers
  • internal visibility with a TODO for future public API is appropriate for an incremental approach

⚠️ Issues:

  1. No tests — This is the primary blocker. There are no UI tests verifying that:

    • When Material3 is enabled, RadioButton uses MaterialRadioButton as the platform view
    • The visual appearance matches Material3 styling
    • Existing RadioButton functionality is preserved (checked/unchecked states, events)
  2. Missing newline at end of fileRadioButtonHandler2.Android.cs is missing a trailing newline (indicated by \ No newline at end of file in the diff).

  3. Inconsistency with CheckBoxCheckBoxHandler.Android.cs uses MaterialCheckBox unconditionally (no Material3 flag check). The RadioButton uses a conditional approach. This inconsistency should be documented or reconciled — either CheckBox should also be conditional, or RadioButton should follow CheckBox's unconditional approach.

Fix Quality

The implementation is minimal and correct. The handler2 pattern is consistent with CollectionViewHandler2/CarouselViewHandler2 naming. The conditional registration in AppHostBuilderExtensions.cs is clean. The main gaps are tests and the EOF newline.

Action Required

  1. Add UI tests (use write-tests-agent) verifying Material3 RadioButton behavior on Android
  2. Add trailing newline to RadioButtonHandler2.Android.cs
  3. Clarify or reconcile the Material3 conditional logic vs. CheckBox's unconditional MaterialCheckBox usage

📋 Expand PR Finalization Review
Title: ✅ Good

Current: [Android] Implemented material3 support for RadioButton

Description: ✅ Good

Description needs updates. See details below.

✨ Suggested PR Description

[!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!

Description of Change

Adds Material Design 3 support for RadioButton on Android by introducing a new RadioButtonHandler2 handler (internal, to be made public in .NET 11) that creates a MaterialRadioButton platform view using MauiMaterialContextThemeWrapper.

Android Material Design 3 support:

  • Conditional handler registration in AppHostBuilderExtensions.cs: when RuntimeFeature.IsMaterial3Enabled is true, RadioButtonHandler2 is registered for RadioButton; otherwise the existing RadioButtonHandler is used.
  • The unconditional registration of RadioButtonHandler (previously at the bottom of the handler list) is removed to avoid duplicate registration.
  • Non-Android platforms continue to use RadioButtonHandler unconditionally.

New RadioButtonHandler2 (RadioButtonHandler2.Android.cs):

  • Inherits from RadioButtonHandler, overriding only CreatePlatformView().
  • Returns a MaterialRadioButton (from Google.Android.Material.RadioButton) constructed with MauiMaterialContextThemeWrapper.Create(Context) for correct Material3 theming.
  • Sets SoundEffectsEnabled = false, consistent with the base handler.
  • Marked internal with a // TODO: Material3 - make it public in .net 11 note.

This pattern mirrors the existing CheckBoxHandler approach, which always uses MaterialCheckBox via MauiMaterialContextThemeWrapper.

Material Design 3 spec: RadioButton

Output

Material2 Material3

Issues Fixed

Fixes #33467

Code Review: ⚠️ Issues Found

Code Review — PR #33468

🔴 Critical Issues

Missing newline at end of file

  • File: src/Core/src/Handlers/RadioButton/RadioButtonHandler2.Android.cs
  • Problem: File ends without a trailing newline (\No newline at end of file in diff). This violates standard C# file conventions and can cause issues with some tooling.
  • Recommendation: Add a newline after the closing }.

🟡 Suggestions

Class naming is a placeholder

  • File: src/Core/src/Handlers/RadioButton/RadioButtonHandler2.Android.cs
  • Note: The class is named RadioButtonHandler2 and is internal with a TODO to make it public in .NET 11. This is intentional and acceptable for now, but reviewers should be aware the name is temporary. The TODO comment makes this clear.

GetPlatformRadioButton cast compatibility

  • File: src/Core/src/Handlers/RadioButton/RadioButtonHandler.Android.cs
  • Note: The base RadioButtonHandler uses handler.PlatformView as AppCompatRadioButton in GetPlatformRadioButton(). Since MaterialRadioButton extends AppCompatRadioButton, this cast works correctly when RadioButtonHandler2 is used. No change needed, but reviewers should be aware of the implicit dependency on the inheritance chain.

No unit/device tests added

  • No tests were included for the new RadioButtonHandler2. Given this is a new handler path that activates under a runtime feature flag, a device test verifying the MaterialRadioButton platform view is created when IsMaterial3Enabled would be valuable. This is not a blocker but is a gap.

✅ Looks Good

  • MauiMaterialContextThemeWrapper.Create(Context) is the established pattern (used by MauiMaterialButton, CheckBoxHandler) — correctly adopted here.
  • SoundEffectsEnabled = false is consistent with the base RadioButtonHandler and other Material3 handlers.
  • The #if ANDROID guard in AppHostBuilderExtensions.cs correctly scopes the conditional registration to Android only.
  • Non-Android platforms receive the standard RadioButtonHandler with no behavior change.
  • The overall approach (subclassing handler, overriding CreatePlatformView) is the same pattern used for CheckBoxHandler's MaterialCheckBox — good consistency.
  • Removing the unconditional RadioButtonHandler registration from the bottom of the list prevents duplicate registration on Android.

@rmarinho rmarinho added s/agent-changes-requested AI agent recommends changes - found a better alternative or issues s/agent-gate-failed AI could not verify tests catch the bug s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review) labels Feb 18, 2026
@SyedAbdulAzeemSF4852
Copy link
Copy Markdown
Contributor Author

Added UI tests and addressed all valid concerns.

@sheiksyedm sheiksyedm added the s/agent-fix-implemented PR author implemented the agent suggested fix label Feb 20, 2026
@sheiksyedm
Copy link
Copy Markdown
Contributor

/azp run maui-pr-uitests

@azure-pipelines
Copy link
Copy Markdown

Azure Pipelines successfully started running 1 pipeline(s).

@kubaflo kubaflo removed s/agent-changes-requested AI agent recommends changes - found a better alternative or issues s/agent-gate-failed AI could not verify tests catch the bug labels Feb 25, 2026
@jfversluis jfversluis changed the base branch from main to inflight/current February 27, 2026 18:17
@jfversluis jfversluis merged commit 411bea6 into dotnet:inflight/current Feb 27, 2026
7 of 34 checks passed
jfversluis added a commit that referenced this pull request Mar 2, 2026
### Description of Change

This pull request introduces support for Material Design 3 radio buttons
on Android, making the radio button UI consistent with the latest
Material guidelines when the Material3 feature is enabled. The changes
ensure that the appropriate handler is used depending on the runtime
feature flag.

**Android Material Design 3 support:**

* Conditional registration of radio button handlers in
`AppHostBuilderExtensions.cs`, using `MaterialRadioButtonHandler` when
Material3 is enabled, and falling back to the default
`RadioButtonHandler` otherwise.
* Removal of the unconditional registration of the default
`RadioButtonHandler` to prevent duplicate handler assignments.

**Handler implementation:**

* Addition of the new `MaterialRadioButtonHandler` class in
`RadioButtonHandler.Android.cs`, which creates a `MaterialRadioButton`
platform view with the correct theme wrapper and disables sound effects
for consistency.

Material Design Spec :
[RadioButton](https://m3.material.io/components/radio-button/specs)

### Issues Fixed

Fixes #33467

### Output
| Material2 | Material3 |
|----------|----------|
| <img
src="https://github.com/user-attachments/assets/a8235fae-c86f-4637-ad9b-e3a802d2ddd1">
| <img
src="https://github.com/user-attachments/assets/2b9352f5-bd27-423f-a320-40d0eefceb0d">
|

---------

Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>
jfversluis added a commit that referenced this pull request Mar 2, 2026
### Description of Change

This pull request introduces support for Material Design 3 radio buttons
on Android, making the radio button UI consistent with the latest
Material guidelines when the Material3 feature is enabled. The changes
ensure that the appropriate handler is used depending on the runtime
feature flag.

**Android Material Design 3 support:**

* Conditional registration of radio button handlers in
`AppHostBuilderExtensions.cs`, using `MaterialRadioButtonHandler` when
Material3 is enabled, and falling back to the default
`RadioButtonHandler` otherwise.
* Removal of the unconditional registration of the default
`RadioButtonHandler` to prevent duplicate handler assignments.

**Handler implementation:**

* Addition of the new `MaterialRadioButtonHandler` class in
`RadioButtonHandler.Android.cs`, which creates a `MaterialRadioButton`
platform view with the correct theme wrapper and disables sound effects
for consistency.

Material Design Spec :
[RadioButton](https://m3.material.io/components/radio-button/specs)

### Issues Fixed

Fixes #33467

### Output
| Material2 | Material3 |
|----------|----------|
| <img
src="https://github.com/user-attachments/assets/a8235fae-c86f-4637-ad9b-e3a802d2ddd1">
| <img
src="https://github.com/user-attachments/assets/2b9352f5-bd27-423f-a320-40d0eefceb0d">
|

---------

Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>
github-actions bot pushed a commit that referenced this pull request Mar 3, 2026
### Description of Change

This pull request introduces support for Material Design 3 radio buttons
on Android, making the radio button UI consistent with the latest
Material guidelines when the Material3 feature is enabled. The changes
ensure that the appropriate handler is used depending on the runtime
feature flag.

**Android Material Design 3 support:**

* Conditional registration of radio button handlers in
`AppHostBuilderExtensions.cs`, using `MaterialRadioButtonHandler` when
Material3 is enabled, and falling back to the default
`RadioButtonHandler` otherwise.
* Removal of the unconditional registration of the default
`RadioButtonHandler` to prevent duplicate handler assignments.

**Handler implementation:**

* Addition of the new `MaterialRadioButtonHandler` class in
`RadioButtonHandler.Android.cs`, which creates a `MaterialRadioButton`
platform view with the correct theme wrapper and disables sound effects
for consistency.

Material Design Spec :
[RadioButton](https://m3.material.io/components/radio-button/specs)

### Issues Fixed

Fixes #33467

### Output
| Material2 | Material3 |
|----------|----------|
| <img
src="https://github.com/user-attachments/assets/a8235fae-c86f-4637-ad9b-e3a802d2ddd1">
| <img
src="https://github.com/user-attachments/assets/2b9352f5-bd27-423f-a320-40d0eefceb0d">
|

---------

Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>
HarishKumarSF4517 pushed a commit to HarishKumarSF4517/maui that referenced this pull request Mar 5, 2026
### Description of Change

This pull request introduces support for Material Design 3 radio buttons
on Android, making the radio button UI consistent with the latest
Material guidelines when the Material3 feature is enabled. The changes
ensure that the appropriate handler is used depending on the runtime
feature flag.

**Android Material Design 3 support:**

* Conditional registration of radio button handlers in
`AppHostBuilderExtensions.cs`, using `MaterialRadioButtonHandler` when
Material3 is enabled, and falling back to the default
`RadioButtonHandler` otherwise.
* Removal of the unconditional registration of the default
`RadioButtonHandler` to prevent duplicate handler assignments.

**Handler implementation:**

* Addition of the new `MaterialRadioButtonHandler` class in
`RadioButtonHandler.Android.cs`, which creates a `MaterialRadioButton`
platform view with the correct theme wrapper and disables sound effects
for consistency.

Material Design Spec :
[RadioButton](https://m3.material.io/components/radio-button/specs)

### Issues Fixed

Fixes dotnet#33467

### Output
| Material2 | Material3 |
|----------|----------|
| <img
src="https://github.com/user-attachments/assets/a8235fae-c86f-4637-ad9b-e3a802d2ddd1">
| <img
src="https://github.com/user-attachments/assets/2b9352f5-bd27-423f-a320-40d0eefceb0d">
|

---------

Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>
github-actions bot pushed a commit that referenced this pull request Mar 6, 2026
### Description of Change

This pull request introduces support for Material Design 3 radio buttons
on Android, making the radio button UI consistent with the latest
Material guidelines when the Material3 feature is enabled. The changes
ensure that the appropriate handler is used depending on the runtime
feature flag.

**Android Material Design 3 support:**

* Conditional registration of radio button handlers in
`AppHostBuilderExtensions.cs`, using `MaterialRadioButtonHandler` when
Material3 is enabled, and falling back to the default
`RadioButtonHandler` otherwise.
* Removal of the unconditional registration of the default
`RadioButtonHandler` to prevent duplicate handler assignments.

**Handler implementation:**

* Addition of the new `MaterialRadioButtonHandler` class in
`RadioButtonHandler.Android.cs`, which creates a `MaterialRadioButton`
platform view with the correct theme wrapper and disables sound effects
for consistency.

Material Design Spec :
[RadioButton](https://m3.material.io/components/radio-button/specs)

### Issues Fixed

Fixes #33467

### Output
| Material2 | Material3 |
|----------|----------|
| <img
src="https://github.com/user-attachments/assets/a8235fae-c86f-4637-ad9b-e3a802d2ddd1">
| <img
src="https://github.com/user-attachments/assets/2b9352f5-bd27-423f-a320-40d0eefceb0d">
|

---------

Co-authored-by: Gerald Versluis <gerald.versluis@microsoft.com>
PureWeen added a commit that referenced this pull request Mar 11, 2026
## What's Coming

.NET MAUI inflight/candidate introduces significant improvements across
all platforms with focus on quality, performance, and developer
experience. This release includes 46 commits with various improvements,
bug fixes, and enhancements.


## Button
- [Android] Implemented material3 support for Button by @Dhivya-SF4094
in #33173
  <details>
  <summary>🔧 Fixes</summary>

- [Implement Material3 support for
Button](#33172)
  </details>

## CollectionView
- [Android] Fix RemainingItemsThresholdReachedCommand not firing when
CollectionView has Header and Footer both defined by @SuthiYuvaraj in
#29618
  <details>
  <summary>🔧 Fixes</summary>

- [Android : RemainingItemsThresholdReachedCommand not firing when
CollectionVew has Header and Footer both
defined](#29588)
  </details>

- [iOS/MacCatalyst] Fix CollectionView ScrollTo for horizontal layouts
by @Shalini-Ashokan in #33853
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS/MacCatalyst] CollectionView ScrollTo does not work with
horizontal Layout](#33852)
  </details>

- [iOS & Mac] Fixed IndicatorView Size doesnt update dynamically by
@SubhikshaSf4851 in #31129
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS, Catalyst] IndicatorView.IndicatorSize does not update
dynamically at runtime](#31064)
  </details>

- [Android] Fix for CollectionView Scrolled event is triggered on the
initial app load. by @BagavathiPerumal in
#33558
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] CollectionView Scrolled event is triggered on the initial
app load.](#33333)
  </details>

- [iOS, Android] Fix for CollectionView IsEnabled=false allows touch
interactions by @praveenkumarkarunanithi in
#31403
  <details>
  <summary>🔧 Fixes</summary>

- [More issues with CollectionView IsEnabled, InputTransparent, Opacity
via Styles and code behind](#19771)
  </details>

- [iOS] Fix VerticalOffset Update When Modifying
CollectionView.ItemsSource While Scrolled by @devanathan-vaithiyanathan
in #34153
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS]VerticalOffset Not Reset to Zero After Clearing ItemSource in
CollectionView](#26798)
  </details>

## DateTimePicker
- [Android] Fix DatePicker MinimumDate/MaximumDate not updating
dynamically by @HarishwaranVijayakumar in
#33687
  <details>
  <summary>🔧 Fixes</summary>

- [[regression/8.0.3] [Android] DatePicker control minimum date
issue](#19256)
- [[Android] DatePicker does not update MinimumDate / MaximumDate in the
Popup when set in the viewmodel after first
opening](#33583)
  </details>

## Drawing
- Android drawable perf by @albyrock87 in
#31567

## Editor
- [Android] Implemented material3 support for Editor by
@SyedAbdulAzeemSF4852 in #33478
  <details>
  <summary>🔧 Fixes</summary>

- [Implement Material3 Support for
Editor](#33476)
  </details>

## Entry
- [iOS, Mac] Fix for CursorPosition not updating when typing into Entry
control by @SyedAbdulAzeemSF4852 in
#30505
  <details>
  <summary>🔧 Fixes</summary>

- [Entry control CursorPosition does not update on TextChanged event
[iOS Maui 8.0.7] ](#20911)
- [CursorPosition not calculated correctly on behaviors events for iOS
devices](#32483)
  </details>

## Flyoutpage
- [Android, Windows] Fix for FlyoutPage toolbar button not updating on
orientation change by @praveenkumarkarunanithi in
#31962
  <details>
  <summary>🔧 Fixes</summary>

- [Flyout page in Android does not show flyout button (burger)
consistently](#24468)
  </details>

- Fix for First Item in CollectionView Overlaps in FlyoutPage.Flyout on
iOS by @praveenkumarkarunanithi in
#29265
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] CollectionView not rendering first item correctly in
FlyoutPage.Flyout](#29170)
  </details>

## Image
- [Android] Fix excessive memory usage for stream and resource-based
image loading by @Shalini-Ashokan in
#33590
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] Unexpected high Bitmap.ByteCount when loading image via
ImageSource.FromResource() or ImageSource.FromStream() in .NET
MAUI](#33239)
  </details>

- [Android] Fix for Resize method returns an image that has already been
disposed by @SyedAbdulAzeemSF4852 in
#29964
  <details>
  <summary>🔧 Fixes</summary>

- [In GraphicsView, the Resize method returns an image that has already
been disposed](#29961)
- [IIMage.Resize bugged
behaviour](#31103)
  </details>

## Label
- Fixed Label Span font property inheritance when applied via Style by
@SubhikshaSf4851 in #34110
  <details>
  <summary>🔧 Fixes</summary>

- [`Span` does not inherit text styling from `Label` if that styling is
applied using `Style` ](#21326)
  </details>

- [Android] Implemented material3 support for Label by
@SyedAbdulAzeemSF4852 in #33599
  <details>
  <summary>🔧 Fixes</summary>

- [Implement Material3 Support for
Label](#33598)
  </details>

## Map
- [Android] Fix Circle Stroke color is incorrectly updated as Fill
color. by @NirmalKumarYuvaraj in
#33643
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] Circle Stroke color is incorrectly updated as Fill
color.](#33642)
  </details>

## Mediapicker
- [iOS] Fix: invoke MediaPicker completion handler after
DismissViewController by @yuriikyry4enko in
#34250
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] Media Picker UIImagePickerController closing
issue](#21996)
  </details>

## Navigation
- Fix ContentPage memory leak on Android when using NavigationPage
modally (fixes #33918) by @brunck in
#34117
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] Modal TabbedPage whose tabs are NavigationPage(ContentPage)
is retained after
PopModalAsync()](#33918)
  </details>

## Picker
- [Android] Implement material3 support for TimePicker by
@HarishwaranVijayakumar in #33646
  <details>
  <summary>🔧 Fixes</summary>

- [Implement Material3 support for
TimePicker](#33645)
  </details>

- [Android] Implemented Material3 support for Picker by
@SyedAbdulAzeemSF4852 in #33668
  <details>
  <summary>🔧 Fixes</summary>

- [Implement Material3 support for
Picker](#33665)
  </details>

## RadioButton
- [Android] Implemented material3 support for RadioButton by
@SyedAbdulAzeemSF4852 in #33468
  <details>
  <summary>🔧 Fixes</summary>

- [Implement Material3 Support for
RadioButton](#33467)
  </details>

## Setup
- Clarify MA003 error message by @jeremy-visionaid in
#34067
  <details>
  <summary>🔧 Fixes</summary>

- [MA003 false positive with
9.0.21](#26599)
  </details>

## Shell
- [Android] Fix TabBar FlowDirection not updating dynamically by
@SubhikshaSf4851 in #33091
  <details>
  <summary>🔧 Fixes</summary>

- [[Android, iOS] FlowDirection RTL is not updated dynamically on Shell
TabBar](#32993)
  </details>

- [Android] Fix page not disposed on Shell replace navigation by
@Vignesh-SF3580 in #33426
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] [Shell] replace navigation leaks current
page](#25134)
  </details>

- [Android] Fixed Shell flyout does not disable scrolling when
FlyoutVerticalScrollMode is set to Disabled by @NanthiniMahalingam in
#32734
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] Shell.FlyoutVerticalScrollMode="Disabled" does not disable
scrolling](#32477)
  </details>

## Single Project
- Fix: Throw a clear error when an SVG lacks dimensions instead of a
NullReferenceException by @Shalini-Ashokan in
#33194
  <details>
  <summary>🔧 Fixes</summary>

- [MAUI Fails To Convert Valid SVG Files Into PNG Files (Object
reference not set to an instance of an
object)](#32460)
  </details>

## SwipeView
- [iOS] Fix SwipeView stays open on iOS after updating content by
@devanathan-vaithiyanathan in #31248
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS] - Swipeview with collectionview
issue](#19541)
  </details>

## TabbedPage
- [Windows] Fixed IsEnabled Property not works on Tabs by
@NirmalKumarYuvaraj in #26728
  <details>
  <summary>🔧 Fixes</summary>

- [ShellContent IsEnabledProperty does not
work](#5161)
- [[Windows] Shell Tab IsEnabled Not
Working](#32996)
  </details>

- [Android] Fix NavigationBar overlapping StatusBar when NavigationBar
visibility changes by @Vignesh-SF3580 in
#33359
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] NavigationBar overlaps with StatusBar when mixing
HasNavigationBar=true/false in TabbedPage on Android 15 (API
35)](#33340)
  </details>

## Templates
- Fix for unable to open task using keyboard navigation on windows
platform by @SuthiYuvaraj in #33647
  <details>
  <summary>🔧 Fixes</summary>

- [Unable to open task using keyboard: A11y_.NET maui_User can get all
the insights of
Dashboard_Keyboard](#30787)
  </details>

## TitleView
- Fix for NavigationPage.TitleView does not expand with host window in
iPadOS 26+ by @SuthiYuvaraj in #33088

## Toolbar
- [iOS] Fix toolbar items ignoring BarTextColor on iOS/MacCatalyst 26+
by @Shalini-Ashokan in #34036
  <details>
  <summary>🔧 Fixes</summary>

- [[iOS 26] ToolbarItem color with custom BarTextColor not
working](#33970)
  </details>

- [Android] Fix for ToolbarItem retaining the icon from the previous
page on Android when using NavigationPage. by @BagavathiPerumal in
#32311
  <details>
  <summary>🔧 Fixes</summary>

- [Toolbaritem keeps the icon of the previous page on Android, using
NavigationPage (not shell)](#31727)
  </details>

## WebView
- [Android] Fix WebView in a grid expands beyond it's cell by
@devanathan-vaithiyanathan in #32145
  <details>
  <summary>🔧 Fixes</summary>

- [Android - WebView in a grid expands beyond it's
cell](#32030)
  </details>

## Xaml
- ContentPresenter: Propagate binding context to children with explicit
TemplateBinding by @HarishwaranVijayakumar in
#30880
  <details>
  <summary>🔧 Fixes</summary>

- [Binding context in
ContentPresenter](#23797)
  </details>


<details>
<summary>🔧 Infrastructure (1)</summary>

- [Revert] ContentPresenter: Propagate binding context to children with
explicit TemplateBinding by @Ahamed-Ali in
#34332

</details>

<details>
<summary>🧪 Testing (6)</summary>

- [Testing] Feature Matrix UITest Cases for Shell Flyout Page by
@NafeelaNazhir in #32525
- [Testing] Feature Matrix UITest Cases for Brushes by
@LogishaSelvarajSF4525 in #31833
- [Testing] Feature Matrix UITest Cases for BindableLayout by
@LogishaSelvarajSF4525 in #33108
- [Android] Add UI tests for Material 3 CheckBox by
@HarishwaranVijayakumar in #34126
  <details>
  <summary>🔧 Fixes</summary>

- [[Android] Add UI tests for Material 3
CheckBox](#34125)
  </details>
- [Testing] Feature Matrix UITest Cases for Shell Tabbed Page by
@NafeelaNazhir in #33159
- [Testing] Fixed Test case failure in PR 34294 - [03/2/2026] Candidate
- 1 by @TamilarasanSF4853 in #34334

</details>

<details>
<summary>📦 Other (2)</summary>

- Bumps Syncfusion.Maui.Toolkit dependency to version 1.0.9 by
@PaulAndersonS in #34178
- Fix crash when closing Windows based app when using TitleBar by
@MFinkBK in #34032
  <details>
  <summary>🔧 Fixes</summary>

- [Unhandled exception "Value does not fall within the expected range"
when closing Windows app](#32194)
  </details>

</details>
**Full Changelog**:
main...inflight/candidate
@kubaflo kubaflo added the s/agent-review-incomplete AI agent could not complete all phases (blocker, timeout, error) label Mar 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-controls-radiobutton RadioButton, RadioButtonGroup community ✨ Community Contribution material3 partner/syncfusion Issues / PR's with Syncfusion collaboration platform/android s/agent-fix-implemented PR author implemented the agent suggested fix s/agent-review-incomplete AI agent could not complete all phases (blocker, timeout, error) s/agent-reviewed PR was reviewed by AI agent workflow (full 4-phase review)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement Material3 Support for RadioButton

8 participants