Jetpack Compose中是否存在类似TextView center_vertical的垂直居中属性?
Jetpack Compose 不使用Column实现垂直居中的可行方案
以下方案均可以实现类似原生android:gravity="center_vertical"的垂直居中效果,无需依赖Column布局:
- Box布局对齐方案
给父级Box设置占满可用高度,子元素使用align修饰符指定垂直对齐规则即可:Box( modifier = Modifier.fillMaxHeight() // 父容器可根据需求替换为固定高度 ) { Text( text = "垂直居中内容", modifier = Modifier.align(Alignment.CenterVertically) ) } - Row布局内置对齐方案
Row布局本身支持设置垂直方向的全局对齐规则,适合同排多元素统一垂直居中的场景:Row( modifier = Modifier.fillMaxHeight(), // 可替换为固定高度 verticalAlignment = Alignment.CenterVertically ) { Text(text = "同排元素1") Text(text = "同排元素2") } - 通用修饰符方案(不依赖特定父布局)
直接给需要居中的元素添加wrapContentHeight修饰符,指定对齐规则为垂直居中即可,外层可以是任意布局:Card( modifier = Modifier .height(200.dp) .fillMaxWidth() ) { Text( text = "任意父布局下的垂直居中内容", modifier = Modifier.wrapContentHeight(align = Alignment.CenterVertically) ) }
注意:如果父容器高度为wrap_content会跟随内容高度自适应,此时垂直居中无效果,需要给父容器设置明确高度或者占满可用高度。
内容的提问来源于stack exchange,提问作者Liangjun Sha
相关产品推荐
相关产品推荐

