Android 的ProgressDialog允许您将当前进度和最大值设置为整数。这些值显示在对话框中,如下所示:
3401/10023
其中第一个数字是当前进度,第二个数字是最大值。
我还想显示测量单位。像这样的东西:
3401/10023 KB
这可以使用 ProgressDialog 吗?如果没有,您建议如何将这些信息提供给用户?我试图避免重新实现 ProgressDialog 只是为了包含该单元。
Android 的ProgressDialog允许您将当前进度和最大值设置为整数。这些值显示在对话框中,如下所示:
3401/10023
其中第一个数字是当前进度,第二个数字是最大值。
我还想显示测量单位。像这样的东西:
3401/10023 KB
这可以使用 ProgressDialog 吗?如果没有,您建议如何将这些信息提供给用户?我试图避免重新实现 ProgressDialog 只是为了包含该单元。
更新:setProgressNumberFormat
从第 11 级开始成为 API 的一部分。
源代码的HEADProgressDialog
已经包含一个名为的公共函数,setProgressNumberFormat
可用于设置单位。不幸的是,该功能似乎在最新的 Android 版本中不可用。我想它将包含在未来的更新中。
同时,复制这个实现ProgressDialog
是最好的选择。子类ProgressDialog
化是没有用的,因为它的所有成员都是私有的,并且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));
}
};
你必须重新实现它,你无法避免它
从 API 11 开始,您可以调用以下函数来实现您的目的。
mProgressDialog.setProgressNumberFormat("%1d/%2d kB")
对我来说,我可以设置并不明显:
mProgressDialog.setMessage("Downloading...(size in kB)");
也许这种最简单的方法对其他人来说并不明显......