[Android] Fix for CollectionView Scrolled event is triggered on the initial app load. #33558
+101
−0
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.
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!
Root cause
The issue occurs because Android’s RecyclerView natively invokes OnScrolled(0, 0) during the initial layout to notify changes in visible item positions, even when no actual scrolling has occurred. The .NET MAUI CollectionView handler was treating this layout callback as a user scroll event, causing the Scrolled event to fire when the page loaded. This resulted in behavior that was inconsistent with iOS and violated the expectation that the Scrolled event should only be raised in response to actual user interaction.
Description of Issue Fix
The fix introduces a boolean flag (_isInitialLayout) to filter out the first OnScrolled() invocation when both deltas are zero, identifying it as the initial layout callback. This flag is reset when the adapter is updated to correctly handle subsequent layout cycles. As a result, the Scrolled event is now raised only for genuine scroll activity, ensuring consistent behavior across Android and iOS platforms.
Tested the behavior in the following platforms.
Issues Fixed
Fixes #33333
Output
33333-BeforeFix.mov
33333-AfterFix.mov