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 ..", .....)
}
}