Jetpack Compose:LazyColumn内Row的兄弟Column如何填充行高?
解决Jetpack Compose中LazyColumn列表项Row内Column等高问题
问题核心并非LazyColumn导致,而是Row的默认布局行为限制了fillMaxHeight()生效。Row默认高度为包裹内容,若不给Row设置明确的宽度约束,子Column的fillMaxHeight()无法获取有效的高度参考值。
修正后的代码
LazyColumn() { items(documents) { // 让Row占据LazyColumn整行宽度,高度由内部最高子元素撑开 Row(Modifier.fillMaxWidth()) { Column { Text("One") Text("Two") Text("Three") } Column( // 匹配Row的高度(即第一个Column的高度) modifier = Modifier.fillMaxHeight(), verticalArrangement = Arrangement.SpaceAround ) { Text("One") } } } }
原理说明
Row(Modifier.fillMaxWidth()):让Row占满LazyColumn的整行宽度,其高度会自动由内部最高的子元素(第一个Column)撑开,形成明确的高度约束。Column(Modifier.fillMaxHeight()):此时Column会继承Row的高度约束,直接填充整行高度,配合Arrangement.SpaceAround即可让内部Text在垂直方向均匀分布。
若需调整两个Column的宽度占比,可额外给它们添加Modifier.weight分配比例,不影响高度适配逻辑。
内容的提问来源于stack exchange,提问作者Adam Wiernicki
相关产品推荐
相关产品推荐

