增加 Compose 中 AlertDialog 的标题和文本之间的间距

Ste*_*one 5 android spacing android-layout android-dialog android-jetpack-compose

AlertDialog像下面这样简单

AlertDialog(
    modifier = Modifier,
    title = {
        Text(text = "Title")
    },
    text = {
        Column(
            modifier = Modifier.fillMaxWidth()
        ) {
            TextButton() {
                Text("Text 1")
            }
            TextButton() {
                Text("Text 2")
            }
        }
    },
    confirmButton = {},
    dismissButton = {}
)
Run Code Online (Sandbox Code Playgroud)

如何设置标题和第一个之间的间距TextButton
我尝试将 a 设置.padding(top = X.dp)为“列”或第一个文本按钮,但这似乎只在 .txt 文件的底部创建一个空间AlertDialog
设置自定义也.height(X.dp)不起作用。

我正在使用撰写1.0.3

Ste*_*one 5

现在可以使用Compose Material 3中的新AlertDialog。和之间的默认间距更加合理,也可以向两者添加or 。titletextModifier.padding()Spacer()

implementation("androidx.compose.material3:material3:1.0.0-alpha01")
Run Code Online (Sandbox Code Playgroud)
androidx.compose.material3.AlertDialog(
    onDismissRequest = {
        openDialog.value = false
    },
    title = {
        Text(text = "Title", modifier = Modifier.padding(50.dp))
    },
    text = {
        Spacer(Modifier.height(50.dp))
        Text(text = "Turned on by default")
    },
    confirmButton = {
        TextButton(
            onClick = {
                openDialog.value = false
            }
        ) {
            Text("Confirm")
        }
    },
    dismissButton = {
        TextButton(
            onClick = {
                openDialog.value = false
            }
        ) {
            Text("Dismiss")
        }
    }
)
Run Code Online (Sandbox Code Playgroud)


Abh*_*bhi 4

不是答案。它仅提供有关为什么这是不可能的信息。

目前(2021 年 10 月 6 日)当前的 compose 版本 (1.0.3) 似乎无法实现该要求。
一旦可能,将更新此内容。

AlertDialog代码不考虑提供的填充值。

AlertDialog.kt

// Baseline distance from the first line of the text to the last line of the title
private val TextBaselineDistanceFromTitle = 36.sp
Run Code Online (Sandbox Code Playgroud)

用于定位的文本偏移量是这样计算的。

val textOffset = if (titlePlaceable == null) {
    TextBaselineDistanceFromTop.roundToPx()
} else {
    TextBaselineDistanceFromTitle.roundToPx()
}
Run Code Online (Sandbox Code Playgroud)

文本可组合项中的第一个文本与标题可组合项中的最后一个文本之间的距离始终为36.sp

目前,撰写中的警报对话框代码似乎太老套了,我可以在代码中看到一些 TODO。

希望代码能够尽快更改以处理更多场景。