Slide 22
Slide 22 text
class OverlapRowMeasurePolicy(private val overlapWidth: Dp) : MeasurePolicy {
override fun MeasureScope.measure(measurables: List, constraints: Constraints): MeasureResult {
val childConstraint = constraints.copy(minWidth = 0, minHeight = 0)
val placeables = measurables.map { measurable -> measurable.measure(childConstraint) }
val width = placeables.sumOf { it.width }.coerceAtMost(constraints.maxWidth)
val height = placeables.maxOf { it.height }.coerceAtMost(constraints.maxHeight)
return layout(width, height) {
var offsetX = 0
for (placeable in placeables) {
placeable.placeRelative(offsetX, 0)
offsetX += (placeable.width - overlapWidth.toPx().toInt())
if (offsetX > width) break
}
}
}
}
Overlap (͍ಓ͋Γͦ͏!)