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(...)
}
크기가 맞고 최종적으로 텍스트가 그려질 때까지 약간의 프레임이 걸릴 수 있으므로 이것은 확실히 완벽하지는 않습니다.

Solution 2


https://gist.github.com/inidamleader/b594d35362ebcf3cedf81055df519300