Peter
12/15/2023, 9:12 AMContentScale.Fit
works for Image()
.Timo Drick
12/15/2023, 10:43 AMAlbert Chang
12/15/2023, 11:18 AMModifier.onSizeChanged
which needs two layout passes, you can just use a layout modifier:
Modifier.layout { measurable, constraints ->
val placeable = measurable.measure(Constraints())
val scale = min(
constraints.maxWidth / placeable.width.toFloat(),
constraints.maxHeight / placeable.height.toFloat()
).coerceAtMost(1f)
val size = constraints.constrain(
IntSize(
(placeable.width * scale).roundToInt(),
(placeable.height * scale).roundToInt()
)
)
layout(size.width, size.height) {
placeable.placeWithLayer(
x = (size.width - placeable.width) / 2,
y = (size.height - placeable.height) / 2
) {
scaleX = scale
scaleY = scale
}
}
}
Timo Drick
12/15/2023, 11:20 AMPeter
12/15/2023, 11:32 AMTimo Drick
12/15/2023, 11:34 AM