[英]“.(” 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.requiredWidthIn
在Text
中指定 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.