diff --git a/src/CommunityToolkit.Maui.Core/Layouts/UniformItemsLayoutManager.shared.cs b/src/CommunityToolkit.Maui.Core/Layouts/UniformItemsLayoutManager.shared.cs index dd26019d23..dafdb5caa2 100644 --- a/src/CommunityToolkit.Maui.Core/Layouts/UniformItemsLayoutManager.shared.cs +++ b/src/CommunityToolkit.Maui.Core/Layouts/UniformItemsLayoutManager.shared.cs @@ -30,10 +30,15 @@ public override Size ArrangeChildren(Rect rectangle) var width = rectangle.Width - uniformItemsLayout.Padding.HorizontalThickness; var visibleChildren = uniformItemsLayout.Where(x => x.Visibility == Visibility.Visible).ToArray(); + if (visibleChildren.Length == 0 || width == 0) + { + return rectangle.Size; + } + var columns = GetColumnsCount(visibleChildren.Length, width); var rows = GetRowsCount(visibleChildren.Length, columns); - var boundsWidth = columns == 0 ? 0 : width / columns; + var boundsWidth = width / columns; var boundsHeight = childHeight; var bounds = new Rect(0, 0, boundsWidth, boundsHeight); var count = 0; @@ -51,7 +56,7 @@ public override Size ArrangeChildren(Rect rectangle) } } - return bounds.Size; + return rectangle.Size; } /// diff --git a/src/CommunityToolkit.Maui.UnitTests/Layouts/UniformItemsLayoutTests.cs b/src/CommunityToolkit.Maui.UnitTests/Layouts/UniformItemsLayoutTests.cs index 557c369f6e..7418f7694e 100644 --- a/src/CommunityToolkit.Maui.UnitTests/Layouts/UniformItemsLayoutTests.cs +++ b/src/CommunityToolkit.Maui.UnitTests/Layouts/UniformItemsLayoutTests.cs @@ -99,14 +99,14 @@ public void MaxRowsArrangeChildrenUniformItemsLayout() [Fact] public void ArrangeChildrenUniformItemsLayout() { - var expectedSize = new Size(childWidth, childHeight); - uniformChild = new TestView(expectedSize); + var childSize = new Size(childWidth, childHeight); + uniformChild = new TestView(childSize); uniformItemsLayout.CrossPlatformMeasure(double.PositiveInfinity, double.PositiveInfinity); var rect = new Rect(0, 0, childWidth * childCount, childHeight * childCount); uniformItemsLayout.Layout(rect); var actualSize = uniformItemsLayout.CrossPlatformArrange(rect); - Assert.Equal(expectedSize, actualSize); + Assert.Equal(childSize * childCount, actualSize); } class TestView : View