如何让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
相关产品推荐
相关产品推荐

