ClickableSurface(
onClick = onClick,
modifier = modifier
.height(labelHeight.dp)
.fillMaxWidth(),
){
Box(
contentAlignment = Alignment.Center,
) {
Text(
text = text,
style = TextStyle(
fontSize = 8.sp,
fontWeight = FontWeight.Medium,
color = color100
),
maxLines = 1,
modifier = Modifier
.fillMaxWidth()
)
}
}
默认的
fontSize
是8.dp
,我想让fontSize
响应,这样如果text
中的字符不能容纳一行,fontSize
应该减少,直到text
适合。
Text
可组合项具有 onTextLayout
参数 - 计算新文本布局时执行的回调。它为您提供了一个 TextLayoutResult
的实例,您可以使用它来确定文本是否合适并相应地更新字体大小。
var fontSize by remember {
mutableStateOf(8.sp)
}
Text(
text = text,
maxLines = 1,
fontSize = fontSize,
onTextLayout = {
if (it.didOverflowWidth) {
fontSize = fontSize * .9F
}
}
)