Android 如何使元素填充Jetpack Compose中一行中的剩余空间

Android 如何使元素填充Jetpack Compose中一行中的剩余空间,android,android-jetpack-compose,Android,Android Jetpack Compose,我试图在一行中显示两条彼此相隔的文本消息,但当第一条文本的大小较大时,第二个视图会被挤出屏幕,如下所示: 代码: 行(修饰符=modifier.fillMaxWidth()){ 正文( text=“SAFASFASDFSASDSDSASDSASDSDSASDSASDSASDSASDSASDSASDSDSASDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDS

我试图在一行中显示两条彼此相隔的文本消息,但当第一条文本的大小较大时,第二个视图会被挤出屏幕,如下所示:

代码:

行(修饰符=modifier.fillMaxWidth()){
正文(
text=“SAFASFASDFSASDSDSASDSASDSDSASDSASDSASDSASDSASDSASDSDSASDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDSDS”,
修饰语=修饰语
.填充(顶部=12.dp,底部=12.dp,结束=12.dp,开始=10.dp)
.背景(颜色.灰色)
)
正文(
text=“上午12:00”,
style=messageTimeTextStyle,
修饰语=修饰语
.填充(水平=16.dp),
最大线=1
)
}
输出:

如果您将文本包装在框中,并赋予框的重量,那么您将得到您想要的:

Row(modifier = Modifier.fillMaxWidth()) {
        Box(Modifier.weight(2f)) {
            Text(
                text = "safasfasdfsasdssdsaasdsafasfasdfsasdssdsaasdsafasfasdfsasdssdsaasd",
                Modifier
                    .padding(top = 12.dp, bottom = 12.dp, end = 12.dp, start = 10.dp)
                    .background(Color.Gray)
            )
        }
        Box(Modifier.weight(1f)) {
            Text(
                text = "12:00 am",
                modifier = Modifier
                    .padding(horizontal = 16.dp),
                maxLines = 1
            )
        }
    }

您可以仅对长文本应用
权重
修饰符

.weight
修改器根据元素相对于
行中其他加权同级元素的权重来调整元素的宽度。在测量未加权的子元素后,父元素将划分剩余的水平空间,并根据该权重进行分配

比如:

Row() {
    Text(text = "safasfasdfsasdssdsaasdsadsdsaasdsasdsasdasddassdsssdasdadsasdasdsd",
        Modifier
            .padding(top = 12.dp, bottom = 12.dp, end = 12.dp, start = 10.dp)
            .background(Color.Gray)
            .weight(1f)
         )
    Text(
        text = "12:00 am",
        modifier = Modifier
            .padding(horizontal = 16.dp),
        maxLines = 1
    )
}


是的,我完全可以这样做,但我希望第一个文本占用所有可用空间,只为第二个视图留出空间,正如正常线性布局所预期的那样
Row() {
    Column(Modifier.weight(1f)){
        Text(text = "safasfasdfsasdssdsaasdsadsdsa.." , ....)
    }
    Column() {
        Text( text = "12.00 ..", .....)
    }
}