需要将两个不同宽度的Text()放在一个Row()中。左侧文本可以根据需要设置宽度,而不会干扰右侧文本。右侧文本占据整个剩余宽度,也不会干扰左侧文本。
我遇到了一个问题,如果左边的文本变长,那么它就会开始挤压右边的文本。
我的意思是这个案例:
val textLeft = "some text text text text text text text text text"
val textRight = "some text text"
我自己想要达到以下效果:
1.通常的状态是两个文本的尺寸都很小并且彼此不冲突。左边的文本正好占据了它需要的空间。正确的文本占据了所有剩余空间。
val textLeft = "some text"
val textRight = "some text text"
2.当左边的文本宽度变得很大,到达右边的文本时,左边的文本就会进入省略号,并将其压到容器的右边缘,而不强制右边的文本进入省略号。
val textLeft = "some text text text text text text text text text"
val textRight = "some text text"
3.右侧文本太大,以至于到达左侧文本的边缘并消失为省略号。
val textLeft = "some text"
val textRight = "some text text text text text text text text text text"
4.两个文本都很大,大约在中间相遇,并且都变成了省略号。
val textLeft = "some text text text text text"
val textRight = "some text text text text text"
这是我尝试实现我需要的情况的代码本身:
@Composable
fun TwoTextsRow(textLeft: String, textRight: String) {
Box(
modifier = Modifier.height(40.dp),
contentAlignment = Alignment.Center
) {
Row(
verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.SpaceBetween,
) {
Box(
contentAlignment = Alignment.Center,
modifier = Modifier
.fillMaxHeight()
.background(Color.Gray)
) {
Text(
modifier = Modifier
.wrapContentWidth()
.padding(horizontal = 4.dp),
textAlign = TextAlign.Center,
maxLines = 1,
text = textLeft,
color = Color.White
)
}
Divider(
color = Color.Red,
modifier = Modifier
.fillMaxHeight()
.width(1.dp)
)
Text(
modifier = Modifier
.padding(horizontal = 4.dp)
.fillMaxWidth(),
maxLines = 1,
overflow = TextOverflow.Ellipsis,
textAlign = TextAlign.Center,
text = textRight,
color = Color.White
)
}
}
}
请告诉我需要朝哪个方向来实现这一点,或者需要在我的代码中纠正哪些内容,以便实现我列出的结果。