ProgressDialog中的进度单位

时间:2010-08-16 09:37:01

标签: android progressdialog

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

  

一万〇二十三分之三千四百〇一

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

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

  

3401/10023 KB

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

4 个答案:

答案 0 :(得分:6)

更新:setProgressNumberFormat是自11级以来API的一部分。

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

与此同时,复制ProgressDialog的此实现是最佳选择。子类化ProgressDialog是没有用的,因为它的所有成员都是私有的,并与view.findViewById(R.id.progress_number)合作以使TextView直接非常冒险,因为没有任何条件确保id将始终相同(或TextView将始终存在)。

答案 1 :(得分:5)

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

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

答案 2 :(得分:5)

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

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

答案 3 :(得分:3)

对我而言,我可以设置:

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

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