-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Commit 5041f71
Fix Android ScrollView to Measure Content Correct (#30997)
### Description of Change
This PR is a re-application of #30964
to make sure that @kubaflo is added as a co-author
This pull request introduces several updates to the `ScrollView` and its
related components to improve layout handling, measurement logic, and
platform-specific implementation for Android. The changes focus on
simplifying code, enhancing functionality, and addressing edge cases in
layout and measurement.
### Enhancements to measurement and layout logic:
- **Refactored `ICrossPlatformLayout.CrossPlatformMeasure` and
`CrossPlatformArrange`:** Improved measurement logic by introducing
explicit constraints based on scroll orientation and utilizing the new
`MeasureContent` method for more accurate content measurement. Added
null checks and default values to prevent errors during layout
operations.
(`[[1]](diffhunk://#diff-d3dcb79b77b66e99d195c7e8406a19b95224604786bab4e82509c4acd3913735L246-R266)`,
`[[2]](diffhunk://#diff-d3dcb79b77b66e99d195c7e8406a19b95224604786bab4e82509c4acd3913735L237-R238)`)
- **Introduced `MeasureContent` method in `LayoutExtensions`:** Added a
new internal method to handle content measurement with support for
explicit dimensions and padding adjustments, improving modularity and
reusability.
(`[src/Core/src/Layouts/LayoutExtensions.csR170-R200](diffhunk://#diff-923a4005b8fd76c6fe5a26814219f9002063666b6d6a49b6b1e19aea086628f4R170-R200)`)
### Platform-specific updates for Android:
- **Updated `MauiHorizontalScrollView` initialization:** Enabled the
`FillViewport` property to ensure the scroll view fills its viewport,
enhancing usability for horizontal scrolling.
(`[src/Core/src/Platform/Android/MauiScrollView.csL100-R104](diffhunk://#diff-546ef8b25e238ce6a1820c920cb327471d6481eefc486eae39b3e5a31b45d907L100-R104)`)
- **Removed unused `CrossPlatformArrange` logic:** Simplified the layout
handling in `MauiScrollView` by removing the `CrossPlatformArrange`
property and related code, which was no longer required.
(`[[1]](diffhunk://#diff-546ef8b25e238ce6a1820c920cb327471d6481eefc486eae39b3e5a31b45d907L232-L240)`,
`[[2]](diffhunk://#diff-546ef8b25e238ce6a1820c920cb327471d6481eefc486eae39b3e5a31b45d907L324-L325)`)
### Code cleanup and refactoring:
- **Improved readability in `ScrollView` and
`ScrollViewHandler.Android`:** Adjusted formatting and removed redundant
code to enhance clarity and maintainability.
(`[[1]](diffhunk://#diff-7c61a3f8442182cb2e772edaa805382c721965440aa3b0244462d1aae6c4ee4dL518-R519)`,
`[[2]](diffhunk://#diff-d3dcb79b77b66e99d195c7e8406a19b95224604786bab4e82509c4acd3913735L28-L35)`)
### Issues Fixed
<!-- Please make sure that there is a bug logged for the issue being
fixed. The bug should describe the problem and how to reproduce it. -->
Fixes #30951
<!--
Are you targeting main? All PRs should target the main branch unless
otherwise noted.
-->
Co-authored-by: kubaflo <42434498+kubaflo@users.noreply.github.com>File tree
Expand file treeCollapse file tree
0 file changed
+0
-0
lines changedOpen diff view settings
Filter options
Expand file treeCollapse file tree
0 file changed
+0
-0
lines changedOpen diff view settings
0 commit comments