Jetpack Compose Row组件视图对齐实现咨询:特定布局需求
实现Jetpack Compose指定Row布局需求
要达成TEXT1左对齐、TEXT2右对齐,且TEXT1超过中线自动换行的布局效果,你原代码的问题在于用三个weight(1f)将Row拆成了三等分,不符合中线平分的要求。以下是符合需求的实现方案:
@Composable fun RowBalance(modifier: Modifier = Modifier, title: String, value: String) { Row( modifier = modifier .padding(top = 8.dp, bottom = 8.dp) .fillMaxWidth(), // 让Row占满可用宽度,保证左右区域各分一半 verticalAlignment = Alignment.CenterVertically // 可选:让上下文本垂直居中对齐 ) { // 左侧区域:占Row宽度的一半,TEXT1左对齐,超出自动换行 Box(modifier = Modifier.weight(1f)) { Text( text = title, textAlign = TextAlign.Start, modifier = Modifier.fillMaxWidth() ) } // 右侧区域:占Row宽度的一半,TEXT2右对齐 Box(modifier = Modifier.weight(1f)) { Text( text = value, textAlign = TextAlign.End, modifier = Modifier.fillMaxWidth() ) } } Divider(thickness = 0.5.dp, color = Color.LightGray) }
关键说明:
fillMaxWidth()确保Row撑满父组件宽度,这样两个weight(1f)的容器能严格各占50%宽度,正好以中线分隔。- 左侧
Text通过textAlign = TextAlign.Start实现左对齐,fillMaxWidth()让文本容器占满左侧区域,内容超过宽度时自动换行。 - 右侧
Text通过textAlign = TextAlign.End实现右对齐,同样占满右侧区域,内容会靠右侧显示。
如果希望TEXT2仅占用自身内容宽度(不拉伸填充右侧区域),可以修改右侧实现:
// 右侧区域:占Row宽度一半,TEXT2靠右端且仅占自身宽度 Box( modifier = Modifier.weight(1f), contentAlignment = Alignment.CenterEnd ) { Text(text = value) }
内容的提问来源于stack exchange,提问作者Remik
相关产品推荐
相关产品推荐

