【问题标题】:Progress unit in ProgressDialogProgressDialog中的进度单元
【发布时间】:2010-08-16 09:37:01
【问题描述】:

Android 的ProgressDialog 允许您将当前进度和最大值设置为整数。这些值在对话框中显示如下:

3401/10023

其中第一个数字是当前进度,第二个数字是最大值。

我还想显示测量单位。像这样的:

3401/10023 KB

这可以使用 ProgressDialog 吗?如果没有,您建议如何将这些信息提供给用户?我试图避免重新实现 ProgressDialog 只是为了包含该单元。

【问题讨论】:

  • 你为什么不按百分比来做呢?喜欢 30/100
  • 进度对话框已显示百分比。但是在文件下载进度对话框中,我认为以字节为单位显示进度对用户来说更友好,特别是如果它是一个大文件。
  • 如果您查看 ProgressDialog 源,文本由 onCreate 方法中创建的处理程序处理。看我的下一个答案

标签: android progressdialog


【解决方案1】:

更新:setProgressNumberFormat 从第 11 级开始成为 API 的一部分。

ProgressDialog 源代码的HEAD 已经包含一个名为setProgressNumberFormat 的公共函数,可用于设置单位。不幸的是,该功能似乎在最新的 Android 版本中不可用。我猜它会包含在未来的更新中。

与此同时,复制ProgressDialog 的这个实现是最好的选择。子类化 ProgressDialog 是没有用的,因为它的所有成员都是私有的,并且与 view.findViewById(R.id.progress_number) 一起直接获取 TextView非常风险,因为没有任何东西可以确保 id 始终相同(或者TextView 将永远存在)。

【讨论】:

  • 是的,但 setProgressNumberFormat 至少为 2.3。根本不推荐使用 findViewById,没有任何东西可以告诉您任何实际或未来的版本都具有相同的 id
  • 同意。我实际上提到了这些可能性来阻止它们的使用,但我会更清楚地说明。
【解决方案2】:

从 API 11 开始,您可以调用以下函数来达到您的目的。

mProgressDialog.setProgressNumberFormat("%1d/%2d kB") 

【讨论】:

    【解决方案3】:

    在 ProgressDialog 源文件中:

    mViewUpdateHandler = new Handler() {
                @Override
                public void handleMessage(Message msg) {
                    super.handleMessage(msg);
    
                    /* Update the number and percent */
                    int progress = mProgress.getProgress();
                    int max = mProgress.getMax();
                    double percent = (double) progress / (double) max;
                    mProgressNumber.setText(progress + "/" + max);
                    mProgressPercent.setText(mProgressPercentFormat.format(percent));
                }
            };
    

    你必须重新实现它,你无法避免它

    【讨论】:

      【解决方案4】:

      对我来说,我可以设置并不明显:

      mProgressDialog.setMessage("Downloading...(size in kB)");
      

      也许这种最简单的方式对其他人来说并不明显......

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-10-12
        • 1970-01-01
        • 2014-08-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多