我正在使用Jetpack Compose创建一个布局,其中包含一列。我希望将此列中的项目居中:
Column(modifier = ExpandedWidth) {
Text(text = item.title)
Text(text = item.description)
}
我正在使用Jetpack Compose创建一个布局,其中包含一列。我希望将此列中的项目居中:
Column(modifier = ExpandedWidth) {
Text(text = item.title)
Text(text = item.description)
}
如果你正在使用lazyColumn加载列表,并且想要使整个项目居中,你可以使用以下代码:
LazyColumn( horizontalAlignment = Alignment.CenterHorizontally) {
}
如果您正在使用0.1.0-dev09
版本,您可以通过使用参数horizontalAlignment
和verticalArrangement
来修改重力或排列属性。
@Composable
fun centeredColumn() {
return Column (
modifier = Modifier.height(100.dp),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
Image(asset = imageResource(id = R.drawable.ic_emojo_logo_white))
Text(text = stringResource(id = R.string.login_subtitle))
}
}
modifier = Modifier.align(Alignment.CenterHorizontally)
Column(
modifier = Modifier.fillMaxSize(),
verticalArrangement = Arrangement.Center,
horizontalAlignment = Alignment.CenterHorizontally
){
// Child Composable Here Like Text, Row, Box, Image ... more
}
verticalArrangement
-> 将所有子组件垂直居中对齐到列(父组件)
horizontalAlignment
-> 将所有子组件水平居中对齐到列(父组件)
更新:此答案已过时。
您可以使用Column(crossAxisAlignment = CrossAxisAlignment.Center)
。它的工作原理类似于重力。
水平居中
Column(modifier = Modifier.fillMaxWidth()) {
Text(text = item.title)
Text(text = item.description)
}
在父级表面上水平和垂直居中
Column(modifier = Modifier.fillMaxWidth().fillMaxHeight(), verticalArrangement = Arrangement.Center) {
Text(text = item.title)
Text(text = item.description)
}
你可以使用FlexColumn将内容居中,因为它支持CrossAxisAlignment属性。
FlexColumn(crossAxisAlignment = CrossAxisAlignment.Center) {
inflexible {
Text(text = item.title)
Text(text = item.description)
}
}
FlexColumn(mainAxisAlignment = MainAxisAlignment.Center,
crossAxisAlignment = CrossAxisAlignment.Center) {
inflexible {
Text(text = item.title)
Text(text = item.description)
}
}
这是最新版本的compose(0.1.0-dev05)的操作方法
如果您想将文本居中在此容器内,您需要使用LayoutAlign
修饰符。
Column(modifier = LayoutWidth.Fill + LayoutAlign.Center) {
Text(text = item.title)
Text(text = item.description)
}
Text(
textAlign = TextAlign.Center,
text = "We are making some improvements. Please, try again later."
)