dagomni
05/19/2020, 6:06 PMLeland Richardson [G]
05/19/2020, 9:18 PMSiyamed
05/19/2020, 9:18 PMdagomni
05/20/2020, 11:11 AMLeland Richardson [G]
05/20/2020, 1:45 PMdagomni
05/20/2020, 3:24 PMLeland Richardson [G]
05/20/2020, 4:58 PMdagomni
05/20/2020, 5:09 PMSiyamed
05/20/2020, 5:11 PMMantas Varnagiris
06/30/2020, 6:20 AMdagomni
06/30/2020, 8:09 AMMantas Varnagiris
06/30/2020, 5:16 PMSiyamed
06/30/2020, 5:52 PMMantas Varnagiris
06/30/2020, 5:53 PMclass UnconstrainedSizeModifier : LayoutModifier {
override fun MeasureScope.measure(measurable: Measurable, constraints: Constraints, layoutDirection: LayoutDirection): MeasureResult {
val placeable = measurable.measure(constraints.copy(maxWidth = Constraints.Infinity, maxHeight = Constraints.Infinity), layoutDirection)
return layout(placeable.width, placeable.height) {
placeable.place(0, 0)
}
}
}
fun Modifier.unconstrainedSize() = this + UnconstrainedSizeModifier()
And then
WithConstraints(modifier = Modifier.fillMaxSize()) {
var sizeRequiredToDraw by state { IntSize(0, 0) }
val canvasWidth = maxWidth.toPx()
val canvasHeight = maxHeight.toPx()
val scale = remember(sizeRequiredToDraw, maxWidth, maxHeight) {
val widthRatio = canvasWidth / sizeRequiredToDraw.width
val heightRatio = canvasHeight / sizeRequiredToDraw.height
min(widthRatio, heightRatio)
}
Text(
modifier = Modifier.wrapContentSize().unconstrainedSize().drawLayer(scaleX = scale, scaleY = scale),
fontSize = 50.sp, // max size
text = "This is your text",
onTextLayout = {
sizeRequiredToDraw = it.size
}
)
}
Not sure if this is the most efficient way though but it works for nowSiyamed
06/30/2020, 8:19 PMMantas Varnagiris
06/30/2020, 8:20 PMSiyamed
06/30/2020, 8:21 PMMantas Varnagiris
06/30/2020, 8:23 PMAutoSizeText