我正在搜索如何在 Jetpack Compose 中创建自定义对话框。在 XML 或 Material Design 中,我们可以轻松创建自定义对话框,在其中我们可以接受用户输入、单选按钮等,但我在 Jetpack Compose 中没有找到这样的东西。
android android-alertdialog android-jetpack android-jetpack-compose android-compose-dialog
我一直在尝试在 Android Jetpack Compose 的动态列表中显示AlertDialogfrom 。onClickCard
我在执行此操作时收到编译时错误@Composable 调用只能从 @Composable 函数的上下文中发生。
下面是我的代码片段:
@Preview(showBackground = true)
@Composable
fun prepareCard(card: Card) {
MyApplicationTheme() {
androidx.compose.material.Card() {
Column(Modifier.clickable {
Log.d("TAG", "clicked : " + card.name)
val showDialog = mutableStateOf(true)
if (showDialog.value) {
alert(card)
}
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已经制作了alert()从上面的代码调用的可组合函数
@Composable
fun alert(card : Card) {
AlertDialog(
title = {
Text("")
},
text = {
Text(text = card.name)
}, onDismissRequest = {
},
confirmButton = {},
dismissButton = …Run Code Online (Sandbox Code Playgroud) android android-alertdialog kotlin android-jetpack-compose android-compose-dialog
我是 jetpack compose 的新手,我真的很想知道如何消除可组合对话框。jetpack compose 中的对话框是否有像 dismiss() 这样的函数?
通过使用下面的代码,我无法关闭该对话框,无论是触摸外部还是按后退按钮。该对话框在视图层次结构的顶部仍然可见。`
@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 …Run Code Online (Sandbox Code Playgroud) android dialog android-dialog android-jetpack-compose android-compose-dialog