ProgressDialog中的进度单位

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

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

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

我也想展示一下测量单位。 像这样的东西:

3401/10023 KB

这是可能的使用ProgressDialog? 如果没有,您build议如何将这些信息提供给用户? 我试图避免重新实现ProgressDialog只是包括单位。

Solutions Collecting From Web of "ProgressDialog中的进度单位"

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

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

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

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

同时,复制ProgressDialog这个实现是最好的select。 inheritanceProgressDialog是没有用的,因为它的所有成员都是私有的,并且使用view.findViewById(R.id.progress_number)直接获取TextView非常危险的,因为没有确保id始终相同(或者TextView将始终存在)。

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

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

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

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

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