Android Jetpack Compose如何无包装组件将元素放到Column底部
实现方案
可以实现,无需给Composable3()添加外层包装容器,有两种常用实现方式:
方案1:插入空白占位(推荐)
在Composable2()和Composable3()之间插入一个占满剩余高度的Spacer组件,将Composable3顶到Column底部:
Column(modifier = Modifier.fillMaxHeight()) { Composable1() Composable2() Spacer(modifier = Modifier.weight(1f)) Composable3() }
方案2:直接给Composable3加修饰符
如果不需要新增额外组件,直接给Composable3添加修饰符即可实现效果:
Column(modifier = Modifier.fillMaxHeight()) { Composable1() Composable2() Composable3( modifier = Modifier .weight(1f) .wrapContentHeight(Alignment.Bottom) ) }
原理解释
Modifier.weight是Row/Column的专属修饰符,传入的数值代表当前组件占用父容器剩余未分配空间的比例:
- 方案1中
Spacer设置weight(1f)后,会占用Composable1、Composable2测量完成后剩下的全部高度,自然将Composable3推到Column底部 - 方案2中给
Composable3分配全部剩余高度后,通过wrapContentHeight(Alignment.Bottom)让Composable3自身在分配到的高度中底部对齐,同样可以实现效果
内容的提问来源于stack exchange,提问作者Abhimanyu
相关产品推荐
相关产品推荐

