9

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

3401/10023

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

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

3401/10023 KB

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

4

4 回答 4

6

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

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

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

于 2010-08-16T20:08:23.300 回答
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));
            }
        };

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

于 2010-08-16T19:26:17.483 回答
5

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

mProgressDialog.setProgressNumberFormat("%1d/%2d kB") 
于 2013-09-25T08:51:08.923 回答
3

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

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

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

于 2012-12-07T18:59:30.583 回答