How To Make Element Fill The Remaining Space Inside A Row Or A Column In Jetpack Compose
I am trying to show two text messages besides each other in a row but when the size of the first text is big, the second view gets pushed out of the screen as shown below: The cod
Solution 1:
You can apply the weight
modifier only to the long text.
The .weight
modifier sizes the element's width proportional to its weight relative to other weighted sibling elements in the Row
. The parent will divide the horizontal space remaining after measuring unweighted child elements and distribute it according to this weight
Something like:
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
)
}
or
Row() {
Column(Modifier.weight(1f)){
Text(text = "safasfasdfsasdssdsaasdsadsdsa.." , ....)
}
Column() {
Text( text = "12.00 ..", .....)
}
}
Solution 2:
If you wrap your text in boxes and give your boxes weight, then you get what you are looking for:
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
)
}
}
Post a Comment for "How To Make Element Fill The Remaining Space Inside A Row Or A Column In Jetpack Compose"