Пользовательский интерфейс Jetpack Compose — ширина кнопки изменяется при нажатии внутри AlertDialog

Я столкнулся с этой странной проблемой сfillMaxWidth(fraction = ...)с AlertDialog и Button, где Button изначально отображается в одном размере, а при щелчке он сжимается до обертывания своего содержимого. Вот самый простой пример, который я могу создать. Я пробовал несколько версий Compose, но все они делают одно и то же. Есть идеи?

      AlertDialog(
    modifier = modifier,
    onDismissRequest = {},
    text = { },
    buttons = {
        Button(
            onClick = { },
            modifier = Modifier
                .fillMaxWidth(0.75f)
                .padding(start = 12.dp, end = 12.dp, bottom = 8.dp)
            ) {
                Text(text = "Done")
            }
        }
    )

Перед нажатием:

После клика:

1 ответ

Я использовал образец, который можно составить отсюда , и добавил к нему ваш модификатор для каждой кнопки, чтобы он выглядел так:

      @Composable
fun AlertDialogSample() {
    MaterialTheme {
        Column {
            val openDialog = remember { mutableStateOf(false) }

            Button(onClick = {
                openDialog.value = true
            }) {
                Text("Click me")
            }

            if (openDialog.value) {

                AlertDialog(
                    onDismissRequest = {
                        // Dismiss the dialog when the user clicks outside the dialog or on the back
                        // button. If you want to disable that functionality, simply use an empty
                        // onCloseRequest.
                        openDialog.value = false
                    },
                    title = {
                        Text(text = "Dialog Title")
                    },
                    text = {
                        Text("Here is a text ")
                    },
                    confirmButton = {
                        Button(
                            modifier = Modifier
                                .fillMaxWidth(0.75f)
                                .padding(start = 12.dp, end = 12.dp, bottom = 8.dp),
                            onClick = {
                                openDialog.value = false
                            }) {
                            Text("This is the Confirm Button")
                        }
                    },
                    dismissButton = {
                        Button(
                            modifier = Modifier
                                .fillMaxWidth(0.75f)
                                .padding(start = 12.dp, end = 12.dp, bottom = 8.dp),
                            onClick = {
                                openDialog.value = false
                            }) {
                            Text("This is the dismiss Button")
                        }
                    }
                )
            }
        }

    }
}

и я вижу кнопки шириной 75%.

Не объясняет, почему вы видите описанную проблему, но предлагает решение.