Fix child constraints in (Horizontal|Vertical)Grid

Bug: 290184746
Test: Manual. Wrote a demo with multiple grids in http://aosp/2635217
Change-Id: I2d67f43a53e76a7053473fce327c5f82a14f2c75
This commit is contained in:
Jordan Demeulenaere
2023-07-10 15:41:25 +02:00
parent fc8905a72b
commit 3d5bf056c3

View File

@@ -22,7 +22,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.layout.Layout
import androidx.compose.ui.unit.Constraints
import androidx.compose.ui.unit.Dp
import androidx.compose.ui.unit.constrainWidth
import androidx.compose.ui.unit.dp
import kotlin.math.ceil
import kotlin.math.max
@@ -126,18 +125,20 @@ private fun Grid(
((columns - 1) * horizontalSpacing.toPx()).roundToInt()
val totalVerticalSpacingBetweenChildren = ((rows - 1) * verticalSpacing.toPx()).roundToInt()
val childConstraints =
Constraints().apply {
if (constraints.maxWidth != Constraints.Infinity) {
constrainWidth(
Constraints(
maxWidth =
if (constraints.maxWidth != Constraints.Infinity) {
(constraints.maxWidth - totalHorizontalSpacingBetweenChildren) / columns
)
}
if (constraints.maxHeight != Constraints.Infinity) {
constrainWidth(
} else {
Constraints.Infinity
},
maxHeight =
if (constraints.maxHeight != Constraints.Infinity) {
(constraints.maxHeight - totalVerticalSpacingBetweenChildren) / rows
)
}
}
} else {
Constraints.Infinity
}
)
val placeables = buildList {
for (cellIndex in measurables.indices) {