verticalScroll
wraps the height of the content, and can be stretched to very long, so the scope has Constraints.Infinity
for maxHeight
constraint.
From fillMaxHeight
documentation
If the incoming maximum height is Constraints.Infinity this modifier will have no effect.
That’s why you need to set height
explicitly.
Consider switching to LazyColumn
(which has fillParentMaxHeight()
for this exact purpose) or to Pager
(which is made explicitly for such cases).
Also, as @AdrianK pointer out, with regular scrollable
you can wrap your view with BoxWithConstraints
, and use maxHeight
to set height
of your view.
BoxWithConstraints {
Box(
modifier = Modifier
.fillMaxSize()
.border(2.dp, Color.Green)
.verticalScroll(rememberScrollState())
) {
Column {
repeat(2) {
Column(
modifier = Modifier
// fillMaxWidth instead of fillMaxSize
.fillMaxWidth()
// explicit height modifier
.height([email protected])
.padding(2.dp)
.border(2.dp, Color.Red)
) {
//some content
}
}
}
}
}
Result: