如何让Row中的Composable与其他Composable等高?
解决Compose中Row内组件等高问题
你遇到的问题根源在于:如果Row的父布局是fillMaxHeight(),Row会默认拉伸到父布局高度,此时给Foo加fillMaxHeight()会让它填满整个屏幕,而非跟随Bar的高度。核心解决思路是让Row的高度由最高子组件(Bar)决定,再让Foo填充Row的高度,具体操作如下:
1. 限制Row高度为子组件最大高度
给Row添加Modifier.wrapContentHeight(),强制Row仅包裹子组件的最大高度,避免被父布局拉伸:
Row( modifier = Modifier.wrapContentHeight() ) { Foo(modifier = Modifier.fillMaxHeight()) Bar(cellSize = 80) }
2. 让Foo填充Row高度
给Foo传入Modifier.fillMaxHeight(),让它填满Row的高度(即Bar的高度)。同时要确保Foo内部的根组件也填充自身高度,比如Foo的实现示例:
@Composable fun Foo(modifier: Modifier = Modifier) { Box( modifier = modifier.fillMaxHeight(), contentAlignment = Alignment.Center // 可选,让内部内容居中显示 ) { // 你的自定义内容 Text("Foo 内容") } }
这样处理后,Row的高度会由Bar的cellSize决定,Foo会自动拉伸到和Bar完全等高,不会再出现填满屏幕的问题。
内容的提问来源于stack exchange,提问作者Kun.tito
相关产品推荐
相关产品推荐

