使Row中的第一个元素换行而不占用所有可用空间

4
在Android Compose中,我想创建一个占用所有可用宽度并包含两个文本的RowHow this should look 以下是要实现的功能:
1. 第一段文本应位于行的开头。 2. 第二段文本应紧随第一段文本后面。 3. 第一段文本的大小可变,可以软换行,并且应该先溢出。 4. 第二段文本是固定的,最多占用一行,并且只有在第一段文本无法进一步缩小时才会溢出。
我尝试了很多方法,但只能实现以下任一功能:
a. 通过将它们简单地依次放置在代码中,使第二个文本紧随第一个文本后面但先溢出。
Row(
    modifier = Modifier.fillMaxWidth(),
    verticalAlignment = Alignment.CenterVertically
) {
    Text(text = title)

    Text(
        text = "Fixed text",
        maxLines = 1
    )
}

我的尝试

b. 让第一段文本首先溢出,但当它不溢出时,占用整个可用空间(通过向第一段文本添加Modifier.weight(1f))。

Row(
    modifier = Modifier.fillMaxWidth(),
    verticalAlignment = Alignment.CenterVertically
) {
    Text(
        text = title,
        modifier = Modifier.weight(1f)
    )

    Text(
        text = "Fixed text",
        maxLines = 1
    )
}

My attempt b

我该如何实现所描述的行为?我知道可以使用ConstraintLayout,但如果可能的话,我想避免使用它。


1
请查看 https://dev59.com/OMXsa4cB1Zd3GeqPWjta。 - Gabriele Mariotti
1个回答

6
你可以使用weightfill参数,它默认为true,因此会自动占用所有可用空间。但如果你将其切换为false,则会得到你想要的结果。
例如:
// PreviewShortTextWithNoFill
Row(
    modifier = Modifier
        .fillMaxWidth()
        .padding(all = 16.dp),
    horizontalArrangement = Arrangement.spacedBy(space = 8.dp),
    verticalAlignment = Alignment.CenterVertically
) {
    Text(
        modifier = Modifier.weight(weight = 1F, fill = false),
        text = "random short text"
    )

    Text(
        text = "fixed text",
        maxLines = 1
    )
}

PreviewShortTextWithNoFill


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接