簡體   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