繁体   English   中英

Text Jetpack Compose 中的自适应字母间距

[英]Adaptive letterSpacing in Text Jetpack Compose

如何使 letterSpacing 自适应以填充最大宽度?

当我尝试将textAlign设置为Justify时,我得到了这个: 图片 如您所见,文本未填充最大宽度。

当我向Text添加非零letterSpacing参数时,我得到了这个结果:

在此处输入图像描述 对于较长的文本,我得到的结果很奇怪,字母相互堆叠。 那么,如何让letterSpacing适应每个宽度呢?

代码:

Text(text = "07:30", 
     textAlign = TextAlign.Justify, 
     modifier = Modifier.fillMaxWidth(),
     //letterSpacing = 20.sp
)

@Pylyp Dukhov 提到的问题间接回答了我的问题。 因此,我们需要在文本溢出它的父级时缩小letterSpacing并在不溢出时增大。 似乎不是最好的解决方案,但聊胜于无。 代码:

var readyToDraw by remember { mutableStateOf(false) }
var letterSpacing by remember { mutableStateOf(50.sp) }
Text(
    text = "07:30",
    modifier = Modifier
        .drawWithContent {
            if (readyToDraw) drawContent()
        }
        .fillMaxWidth(),
    textAlign = TextAlign.Center,
    softWrap = false,
    letterSpacing = letterSpacing,
    onTextLayout = { result ->
        if (!readyToDraw) {
            if (!result.didOverflowWidth && letterSpacing < 80.sp) {
                letterSpacing *= 1.1f
                readyToDraw = true
            } else if (result.didOverflowWidth && letterSpacing > 5.sp) {
                letterSpacing *= 0.9f
            } else {
                readyToDraw = true
            }
        }
    }
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM