如何在Jetpack Compose中调整AlertDialog标题与正文的间距
问题原因
Compose 1.0.x版本的AlertDialog内置了title区域和text区域的固定间距,你直接给text内部的Column或者第一个按钮加顶部padding,只会增加text容器的整体高度,多余的空间会显示在对话框底部,无法达到调整title和第一个按钮间距的效果。
解决方法
有两种简单的实现方案:
方案1:给title组件添加底部padding(改动最小)
直接修改title区域的Text的padding属性,即可调整和下方text区域的间距:
AlertDialog( modifier = Modifier, title = { // 此处添加bottom padding自定义间距,比如16.dp Text(text = "Title", modifier = Modifier.padding(bottom = 16.dp)) }, text = { Column( modifier = Modifier.fillMaxWidth() ) { TextButton(onClick = { /* 点击逻辑 */ }) { Text("Text 1") } TextButton(onClick = { /* 点击逻辑 */ }) { Text("Text 2") } } }, confirmButton = {}, dismissButton = {} )
方案2:将title移入text区域,完全自定义布局
如果需要更灵活的布局控制,可以把标题内容移到text的Column中,原title参数留空即可:
AlertDialog( modifier = Modifier, // 原title参数留空 title = {}, text = { Column( modifier = Modifier.fillMaxWidth() ) { // 使用和默认title一致的文本样式 Text( text = "Title", style = MaterialTheme.typography.h6, color = MaterialTheme.colors.onSurface ) // 自定义你需要的间距 Spacer(modifier = Modifier.height(16.dp)) TextButton(onClick = { /* 点击逻辑 */ }) { Text("Text 1") } TextButton(onClick = { /* 点击逻辑 */ }) { Text("Text 2") } } }, confirmButton = {}, dismissButton = {} )
内容的提问来源于stack exchange,提问作者Stefano Sansone
相关产品推荐
相关产品推荐

