if (textLayoutResult.didOverflowWidth) { textStyle = textStyle.copy(fontSize = textStyle.fontSize * 0.9) } else { readyToDraw = true } } ) Text높이에 따라 글꼴 크기를 조정하려면 컴포저블의 속성을 가지고 놀고 didOverflowHeight다음 대신 사용하세요 didOverflowWidth. val textStyleBody1 = MaterialTheme.typography.body1 var textStyle by remember { mutableStateOf(textStyleBody1) } var readyToDraw by remember { mutableStateOf(false) } Text( text = "long text goes here", style = textStyle, overflow = TextOverflow.Clip, modifier = mod"> if (textLayoutResult.didOverflowWidth) { textStyle = textStyle.copy(fontSize = textStyle.fontSize * 0.9) } else { readyToDraw = true } } ) Text높이에 따라 글꼴 크기를 조정하려면 컴포저블의 속성을 가지고 놀고 didOverflowHeight다음 대신 사용하세요 didOverflowWidth. val textStyleBody1 = MaterialTheme.typography.body1 var textStyle by remember { mutableStateOf(textStyleBody1) } var readyToDraw by remember { mutableStateOf(false) } Text( text = "long text goes here", style = textStyle, overflow = TextOverflow.Clip, modifier = mod"> if (textLayoutResult.didOverflowWidth) { textStyle = textStyle.copy(fontSize = textStyle.fontSize * 0.9) } else { readyToDraw = true } } ) Text높이에 따라 글꼴 크기를 조정하려면 컴포저블의 속성을 가지고 놀고 didOverflowHeight다음 대신 사용하세요 didOverflowWidth. val textStyleBody1 = MaterialTheme.typography.body1 var textStyle by remember { mutableStateOf(textStyleBody1) } var readyToDraw by remember { mutableStateOf(false) } Text( text = "long text goes here", style = textStyle, overflow = TextOverflow.Clip, modifier = mod">
android:autoSizeTextType in Jetpack Compose
사용 가능한 너비에 따라 글꼴 크기를 조정하려면 다음을 사용합니다.
val textStyleBody1 = MaterialTheme.typography.body1
var textStyle by remember { mutableStateOf(textStyleBody1) }
var readyToDraw by remember { mutableStateOf(false) }
Text(
text = "long text goes here",
style = textStyle,
maxLines = 1,
softWrap = false,
modifier = modifier.drawWithContent {
if (readyToDraw) drawContent()
},
onTextLayout = { textLayoutResult ->
if (textLayoutResult.didOverflowWidth) {
textStyle = textStyle.copy(fontSize = textStyle.fontSize * 0.9)
} else {
readyToDraw = true
}
}
)
Text높이에 따라 글꼴 크기를 조정하려면 컴포저블의 속성을 가지고 놀고 didOverflowHeight다음 대신 사용하세요 didOverflowWidth.
val textStyleBody1 = MaterialTheme.typography.body1
var textStyle by remember { mutableStateOf(textStyleBody1) }
var readyToDraw by remember { mutableStateOf(false) }
Text(
text = "long text goes here",
style = textStyle,
overflow = TextOverflow.Clip,
modifier = modifier.drawWithContent {
if (readyToDraw) drawContent()
},
onTextLayout = { textLayoutResult ->
if (textLayoutResult.didOverflowHeight) {
textStyle = textStyle.copy(fontSize = textStyle.fontSize * 0.9)
} else {
readyToDraw = true
}
}
)
목록의 여러 항목에서 글꼴 크기를 동기화해야 하는 경우 구성 가능한 함수 외부에 텍스트 스타일을 저장하세요.
private val textStyle = mutableStateOf(MaterialTheme.typography.body1)
@Composable
fun YourComposable() {
Text(...)
}
크기가 맞고 최종적으로 텍스트가 그려질 때까지 약간의 프레임이 걸릴 수 있으므로 이것은 확실히 완벽하지는 않습니다.
https://gist.github.com/inidamleader/b594d35362ebcf3cedf81055df519300