[英]“.(” 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.