You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Popup不受Column的Arrangement.spacedBy内边距影响?

问题:Popup受Column的Arrangement.spacedBy间距影响,Dialog无此问题

我实现了一个包含Header、Body、Footer的Column布局,当把Footer里的Dialog替换为Popup后,发现PopupMenu会受到Column设置的Arrangement.spacedBy(LARGE_PADDING)产生的间距影响,但Dialog不会出现这种情况。

伪代码示例

@Composable
fun Post() {
    Column(
        verticalArrangement = Arrangement.spacedBy(LARGE_PADDING),
    ) {
        Header()
        Body()
        Footer()
    }
}

@Composable
fun Footer() {
    var showMoreOptions by remember { mutableStateOf(false) }

    if (showMoreOptions) {
        PostOptionsDropdown(onDismissRequest = { showMoreOptions = false }) // 基于Popup实现的下拉菜单
    }

    Row {
        IconButton(onClick = { showMoreOptions = true }) {
            Icon(imageVector = Icons.Outlined.MoreVert, contentDescription = null)
        }
        // 其他Footer元素
    }
}

当前临时修复方案

通过移除Column的Arrangement.spacedBy,改用Spacer手动添加间距:

@Composable
fun Post() {
    Column(
        // 移除verticalArrangement设置
    ) {
        Header()
        Spacer(modifier = Modifier.padding(vertical = LARGE_PADDING))
        Body()
        Spacer(modifier = Modifier.padding(vertical = LARGE_PADDING))
        Footer()
    }
}

但我希望找到更合适的方案,让Popup像Dialog一样不受Column布局的影响,而非替换成手动添加Spacer的方式。

内容的提问来源于stack exchange,提问作者eenNaampje

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 06:55:38