【问题标题】:How to change a progress dialog layout when the progress completed?进度完成后如何更改进度对话框布局?
【发布时间】:2019-01-19 11:29:58
【问题描述】:

我的 AsyncTask 扩展类中有一个进度对话框。 我已经使用 setcontentview() 将布局设​​置为进度对话框。 我想更改进度对话框的设计并在完成时显示 2 秒(即在 PostExecute() 中)。

我在 onPreexecute() 中启动进度对话框并在 onPostexecute() 方法中将其关闭。

这就是我在 onPreexecute 中初始化进度对话框的方式

progressDialog = ProgressDialog.show(context, null, null);
progressDialog.setContentView(R.layout.progress_meditate);
progressDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
progressDialog.setProgressDrawable(new ColorDrawable(Color.WHITE));

我在 onPostExecute 中尝试了以下代码

progressDialog.setContentView(R.layout.progress_complete);
sleep(2000);
progressDialog.dismiss();

但它不起作用。我的 progress_complete 布局未显示。使用相同设计的睡眠时间后,进度对话框将被关闭。

【问题讨论】:

  • 不要尝试更改 setcontentview ,取那个视图并更改视图的背景。
  • 设置后如何从进度对话框中查看?
  • View view = inflater......,然后是progressDialog.setContentView(view),然后是view.setbackground或者改变特定的view。
  • 试过了。不工作。 :-(
  • 然后创建两个进度对话框,一个在另一个之上,在 2 秒后关闭另一个。它会工作

标签: android layout progressdialog


【解决方案1】:

然后创建两个进度对话框,一个在另一个之上,先关闭一个,然后在 2 秒后关闭另一个。它会工作

【讨论】:

    【解决方案2】:

    01.第一步初始化progressBar和ProgressBarText

     private ProgressBar progressBar;
     private TextView progressBarText;
    

    02.第二步声明这个 OnCreate 方法

      progressBar.setVisibility(View.VISIBLE);
      progressBarText.setVisibility(View.VISIBLE);
    

    03.第三步声明这个onPostExecute方法

      progressBar.setVisibility(View.GONE);
      progressBarText.setVisibility(View.GONE);
    

    就是这样。我想这对你有帮助。

    【讨论】:

    • 我想要实现的是改变进度条的设计。进度完成后,进度条应更改为另一个布局
    • 您在进度条加载完成后定位布局调用。
    • 那是不同的布局。完成后,我想更改布局上的颜色、消息、图片等,并在进度对话框关闭之前显示 2 秒。
    【解决方案3】:

    为此,您不能在运行时更改设计。在执行后显示具有不同设计的对话框的唯一可能方法是 创建一个新对话框并关闭前一个对话框并显示新对话框。

    【讨论】:

    • 试过这个。老头子被辞退了。但是没有显示新的。
    【解决方案4】:

    不太简单的解决方案是扩展或创建您自己的 ProgressDialog。 另一方面,在 Android 文档中,您可以找到 following:

    注意:Android 包含另一个名为 ProgressDialog 的对话框类,它显示带有进度条的对话框。 此小部件已弃用,因为它会阻止用户在显示进度时与应用交互。如果您需要指示正在加载或不确定的进度,您应该遵循 Progress & Activity 的设计指南,并在布局中使用 ProgressBar,而不是使用 ProgressDialog。

    我建议/建议将 ProgressBar 作为解决方案的起点,但这是您的决定。

    我认为解决您的问题会更容易,因为 ProgressBar 只是另一个可以在完成时重叠的视图。

    【讨论】:

    • 问题是我不希望用户在显示此进度时做任何事情。 :-) 这就是我选择进度对话框的原因。
    • 我了解您想要实现的目标,但为什么要使用已弃用的组件开发新解决方案?检查以下链接到建议的解决方案:stackoverflow.com/a/45613741/985266
    猜你喜欢
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    • 2011-03-24
    • 2014-05-03
    • 1970-01-01
    • 2013-01-04
    • 1970-01-01
    相关资源
    最近更新 更多