Android的ProgressDialog允许您将当前进度和最大值设置为整数。这些值显示在对话框中,如下所示:
一万〇二十三分之三千四百〇一
第一个数字是当前进度,第二个数字是最大值。
我还想展示测量单位。像这样:
3401/10023 KB
使用ProgressDialog可以吗?如果没有,您建议您将此信息提供给用户?我试图避免重新实现ProgressDialog以包含该单元。
答案 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)");
也许这种最简单的方式对其他人来说并不明显......