簡體   English   中英

Jetpack Compose Text 中的“.(”會導致換行

[英]“.(” in Jetpack Compose Text causes newline

在這個 Jetpack Compose 代碼中,第一個 Text 可組合的結果在新行上有帶括號的文本:

Column {
    Text(text = "2.(0123456789)",
            modifier = Modifier
                    .width(60.dp)
                    .padding(start = 5.dp))
    Spacer(modifier = Modifier . padding(20.dp))
    Text(text = "2.0123456789",
            modifier = Modifier
                    .width(60.dp)
                    .padding(start = 5.dp))
}

在此處輸入圖像描述

如果我刪除“。”或刪除“(”,則不會發生這種情況。

問題是modifier = Modifier.width(60.dp)將固定寬度應用於您的Text

在您的Column中使用Modifier.width(IntrinsicSize.Max)

Column(Modifier.width(IntrinsicSize.Max)) {
    Text(text = "2.(0123456789)",
        modifier = Modifier
            .padding(start = 5.dp))
    Spacer(modifier = Modifier . padding(20.dp))
    Text(text = "2.0123456789",
        modifier = Modifier
            .padding(start = 5.dp))
}

在此處輸入圖像描述

如果你想指定一個有限的寬度,你可以使用Modifier.requiredWidthInText中指定 mindp 和 maxdp 和maxLines = 1之間的寬度。

就像是:

Column(Modifier.requiredWidthIn(0.dp , 75.dp)) {
    Text(
        text = "2.(0123456789)",
        modifier = Modifier
            .padding(start = 5.dp),
        maxLines = 1,
        overflow = TextOverflow.Ellipsis

    )
    Spacer(modifier = Modifier.padding(20.dp))
    Text(
        text = "2.0123456789",
        modifier = Modifier
            .padding(start = 5.dp),
        maxLines = 1,
        overflow = TextOverflow.Ellipsis
    )
}

否則,您將Modifier.requiredWidthIn(0.dp, 75.dp)應用於文本組件而不是列。

Column(Modifier.width(IntrinsicSize.Max)) {
    Text(
        modifier = Modifier
            .requiredWidthIn(0.dp, 75.dp)
        maxLines = 1
    )
    //...
    Text(
        modifier = Modifier
            .requiredWidthIn(0.dp, 75.dp)
        maxLines = 1,
    )
}

問題不在於字符轉義。 事實上,您已經應用了一個固定的小寬度,並且由於修飾符的順序很重要,因此寬度會被 5dps 的填充進一步修剪

編輯:我不太確定,但我認為這可能是因為 Text 本身就支持這樣一個特性,即如果可以的話,文本持有者會在一行中顯示一個單詞。 當您插入一個特殊字符(如句點或括號)時,它會將字符串的 rest 視為一個新句子(語法上),並觀察它的長度,計算它不適合同一行,開始一個新行。 然后長度仍然更大,但別無選擇,只能開始新的一行。 因此,短語 go 的 rest 一直到最后,然后在達到最大容量時開始新的線路。 嘗試在句點或括號后僅插入一個字符。 我不認為它會插入一個新行,因為會有空間插入整個語句(在這種情況下,只有一個字符)。 當我開始打字時,我認為這不是確定的,但現在,我幾乎確信情況確實如此。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM