喷气背包中的ProgressDialog compose

时间:2021-05-15 11:33:41

标签: android android-dialog android-jetpack-compose

我想在用户执行某些操作(例如注册)时显示不确定进度对话框。使用 ProgressDialog 的旧方法。

对于撰写,我发现了这个 How can I render plain android ProgressBar with Compose? 但这并不是我正在寻找的内容,因为它只是一个视图。它不像对话框那样覆盖屏幕。

使用 CircularProgressIndicator 我能够做到这一点:

compose progressbar

如您所见,它显示在视图下方。

我想创建这样的东西:

expected dialog

它应该有:

  1. 昏暗的背景
  2. 绘制其他视图
  3. 不可取消

如何在 Jetpack compose 中实现这一点?

2 个答案:

答案 0 :(得分:5)

您可以使用 Dialog 组合:

var showDialog by remember { mutableStateOf(false) }

if (showDialog) {
    Dialog(
        onDismissRequest = { showDialog = false },
        DialogProperties(dismissOnBackPress = false, dismissOnClickOutside = false)
    ) {
        Box(
            contentAlignment= Center,
             modifier = Modifier
                .size(100.dp)
                .background(White, shape = RoundedCornerShape(8.dp))
        ) {
            CircularProgressIndicator()
        }
    }
}

enter image description here

答案 1 :(得分:0)

Dialogloading text 使用 compose.material 的 Dialog 组件。

@Composable
fun DummyProgress() {
    var dialogState by remember { mutableStateOf(false) }
    Button(onClick = { dialogState = !dialogState }) {
        Text(text = "Show Progress")
    }
    if (dialogState) {
        Dialog(onDismissRequest = { dialogState = false },
        DialogProperties(dismissOnBackPress = false, dismissOnClickOutside = false)) {
            Box(
                contentAlignment= Alignment.Center,
                modifier = Modifier
                    .size(100.dp)
                    .background(White, shape = RoundedCornerShape(12.dp))
            ) {
                Column {
                    CircularProgressIndicator(modifier = Modifier.padding(6.dp, 0.dp, 0.dp, 0.dp))
                    Text(text = "Loading...", Modifier.padding(0.dp, 8.dp, 0.dp, 0.dp))
                }
            }
        }
    }
}

1