我是一个喷气背包作曲的新手,我真的很想知道我如何才能忽略一个可作曲的对话.在Jetpack Compose中,对话框有没有像dismisse()这样的函数?

通过使用下面的代码,我不能关闭对话框,无论是touch 外部还是按下后退按钮.该对话框在视图层次 struct 的顶部仍然可见. 说

@Composable
fun InfoDialog() {
    val shouldDismiss = remember {
        mutableStateOf(false)
    }
    Dialog(onDismissRequest = {
        shouldDismiss.value = false
    }, properties = DialogProperties(
        dismissOnBackPress = true,
        dismissOnClickOutside = true
    )) {
        Card(
            shape = RoundedCornerShape(8.dp),
            modifier = Modifier.padding(16.dp,8.dp,16.dp,8.dp),
            elevation = 8.dp
        ) {
            Column(
                Modifier.background(c282534)) {
                Column(modifier = Modifier.padding(16.dp)) {
                    Text(
                        text = "Notice",
                        textAlign = TextAlign.Center,
                        modifier = Modifier
                            .padding(top = 8.dp)
                            .fillMaxWidth(),
                        style = TextStyle(fontWeight = FontWeight.Bold, color = Color.White, fontSize = 24.sp),
                        maxLines = 2,
                        overflow = TextOverflow.Ellipsis
                    )
                    Text(
                        text = "Allow Permission to send you notifications when important update added.",
                        textAlign = TextAlign.Center,
                        modifier = Modifier
                            .padding(top = 8.dp, start = 24.dp, end = 24.dp)
                            .fillMaxWidth(),
                        style = TextStyle(color = Color.White, fontSize = 16.sp)
                    )
                }
                Row(
                    Modifier
                        .fillMaxWidth()
                        .padding(top = 8.dp),
                    horizontalArrangement = Arrangement.SpaceAround) {

                    TextButton(onClick = {
                        shouldDismiss.value = true
                    }, modifier = Modifier.weight(1f)) {

                        Text(
                            "Close",
                            fontWeight = FontWeight.Normal,
                            color = Color.White,
                            modifier = Modifier.padding(top = 8.dp, bottom = 8.dp)
                        )
                    }
                    TextButton(
                        onClick = {
                        shouldDismiss.value = true
                        },
                        modifier = Modifier.weight(1f)
                    ) {
                        Text(
                            "Allow",
                            fontWeight = FontWeight.ExtraBold,
                            color = Color.White,
                            modifier = Modifier.padding(top = 8.dp, bottom = 8.dp)
                        )
                    }
                }
            }
        }
    }
}

推荐答案

只要该对话框是合成层次 struct 的一部分,它就是可见的. 您应该使用类似以下内容:

val openDialog = remember { mutableStateOf(true) }

if (openDialog.value) {

    Dialog(onDismissRequest = { openDialog.value = false }) {            
        Button(onClick = {openDialog.value = false}){
                Text("Close")
        }
    }
}

Assigning to openDialog the false value the Dialog is dismissed.
And to open just assign to openDialog the true value.
Something like:

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

Android相关问答推荐

Android compose ,在图像中zoom 而不裁剪?

原因平滑滚动的滞后懒惰列在android jetpack compose

译码BLE血糖仪特征值

在Android 14/SDK 34中使用RegisterReceiver的正确方式是什么?

Jetpack Compose主导航中的全屏图标列表

将DiffUtils用于Android上的Recrecerview适配器

如何在Jetpack Compose android中使用导航

设置文本 colored颜色 动画时如何减少重新组合?

如何在Jetpack Compose中创建这个圆形?

闪屏 API 无法在 Android 12 上运行(API 31、32)

Android Studio Relay插件(版本0.3.07)错误

在 compose 中做可变状态堆栈

如何仅使用您的 Android 应用程序定位平板电脑?

Jetpack Compose 如何使一个项目相对于另一个项目垂直居中

Jetpack Compose UI - 在 AlertDialog 中单击时按钮宽度会发生变化

如何关闭可组合对话框?

Jetpack Compose TextField 在输入新字符时不更新

Android Studio 错误要求依赖它的库和应用程序针对 Android API 的 33 版或更高版本进行编译.

如何使用 ConstraintLayout 链接两个文本

如何使用 Kotlin 在 Android Wear(Galaxy watch 4)中继续在后台运行应用程序