【问题标题】:ProgressDialog in jetpack composeJetpack compose 中的 ProgressDialog
【发布时间】:2021-05-15 11:33:41
【问题描述】:

我想在用户执行注册等操作时显示不确定的进度对话框。可以使用 ProgressDialog 的旧方式。

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

有了CircularProgressIndicator,我可以做到这一点:

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

我想创建这样的东西:

应该有:

  1. 暗淡的背景
  2. 覆盖其他视图
  3. 不可取消

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

【问题讨论】:

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


    【解决方案1】:

    您可以使用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()
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      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))
                      }
                  }
              }
          }
      }
      

      【讨论】:

      • 所以你只是复制了 99% 的已接受答案
      • 确切地说,我的答案包含已接受答案的78.5%:D @Angela
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-09-24
      • 2022-11-10
      • 2023-01-22
      • 2021-12-26
      • 2021-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多