У меня есть Jetpack Compose, компонуемый в столбце, начинающемся со значка, заголовка, текста и строки пейджера:
Box(modifier = Modifier
.fillMaxSize()
.background(color = TVTheme.colors.blue)
) {
val bigPadding = 334.dp
val smallPadding = 24.dp
Column(
verticalArrangement = Arrangement.Bottom,
horizontalAlignment = Alignment.CenterHorizontally
) {
Image(
modifier = Modifier
.requiredSize(128.dp, 17.dp),
icon = R.drawable.calendar_a_icon
)
// title
val title = "Lorem Ipsum Dolor Sit"
if (title.isNotEmpty()) {
Text(
text = title,
textAlign = TextAlign.Center,
modifier = Modifier
.padding(top = dimensionResource(id = R.dimen.vertical), start = bigPadding, end = bigPadding),
overflow = TextOverflow.Visible
)
}
// body
val body = "Lorem ipsum dolor sit. Lorem ipsum dolor sit. Lorem ipsum dolor sit. Lorem ipsum dolor sit."
if (body.isNotEmpty()) {
Text(
text = body,
textAlign = TextAlign.Center,
modifier = Modifier
.padding(top = dimensionResource(id = R.dimen.vertical), start = bigPadding, end = bigPadding),
overflow = TextOverflow.Visible
)
}
Row(
modifier = Modifier
.padding(top = 44.dp, bottom = smallPadding, start = smallPadding, end = smallPadding)
.fillMaxWidth(),
horizontalArrangement = Arrangement.SpaceBetween
) {
val text = AnnotatedString.Builder(item.skipButtonText).toAnnotatedString()
ClickableText(
maxLines = 1,
text = "Skip",
onClick = {
skip()
}
)
Pager(
modifier = Modifier
.align(Alignment.CenterVertically),
index = currentPageIndex,
pageNumbers = totalPages)
}
}
}
который производит этот экран:
В столбце есть verticalArrangement = Arrangement.Bottom
, но очевидно, что столбец не выровнен по низу, а начинается сверху.
Итак, как я могу выровнять столбец по низу, как требуется в verticalArrangement = Arrangement.Bottom?
verticalArrangement = Arrangement.Bottom
размещает дочерние элементы вертикально так, чтобы они были как можно ближе к нижней части главной оси.
В вашем случае вы должны применить Modifier.fillMaxHeight()
к Column
:
Column(
verticalArrangement = Arrangement.Bottom,
horizontalAlignment = Alignment.CenterHorizontally,
modifier = Modifier.fillMaxHeight()
) {
Если вы хотите применить исправление заполнения, вы можете использовать что-то вроде modifier = Modifier.padding(xxx).fillMaxWidth()
.
// title
val title = "Lorem Ipsum Dolor Sit"
Text(
text = title,
textAlign = TextAlign.Center,
modifier = Modifier,
.padding(start = bigPadding, end = bigPadding).fillMaxWidth(),
overflow = TextOverflow.Visible
)
Я разделил свой предыдущий вопрос на 2 вопроса и принимаю Modifier.fillMaxHeight() в качестве ответа на этот. Моя другая проблема теперь здесь: stackoverflow.com/questions/75098208/…
Спасибо.
Modifier.fillMaxHeight()
помогло на 1. НоModifier.padding(xxx).fillMaxWidth()
не повлияло на 2.