如何使文本缩小以适应父级可组合宽度

问题描述 投票:0回答:1
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
适合。

responsive-design android-jetpack-compose
1个回答
0
投票

Text
可组合项具有
onTextLayout
参数 - 计算新文本布局时执行的回调。它为您提供了一个
TextLayoutResult
的实例,您可以使用它来确定文本是否合适并相应地更新字体大小。

var fontSize by remember {
  mutableStateOf(8.sp)
}

Text(
  text = text,
  maxLines = 1,
  fontSize = fontSize,
  onTextLayout = {
    if (it.didOverflowWidth) {
      fontSize = fontSize * .9F
    }
  }
)
© www.soinside.com 2019 - 2024. All rights reserved.