Progress unit in ProgressDialog

后端 未结 4 904
隐瞒了意图╮
隐瞒了意图╮ 2020-12-30 10:27

Android\'s ProgressDialog allows you to set the current progress and maximum value as integers. These values are shown in the dialog like this:

3401/1

相关标签:
4条回答
  • 2020-12-30 10:48

    It wasn't obvious for me that I can just set:

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

    Maybe this simplest way isn't obvious for somebody else...

    0 讨论(0)
  • 2020-12-30 10:53

    Update: setProgressNumberFormat is part of the API since level 11.

    The HEAD of the ProgressDialog source code already includes a public function called setProgressNumberFormat which can be used to set the unit. Unfortunately this function does not seem to be available in the latest Android version. I guess it will be included in a future update.

    In the meantime, copying this implementation of ProgressDialog is the best option. Subclassing ProgressDialog is of no use because all of its members are private and working with view.findViewById(R.id.progress_number) to get the TextView directly is extremely risky, as nothing ensures that the id will be always the same (or that the TextView will always exist).

    0 讨论(0)
  • 2020-12-30 10:58

    In the ProgressDialog source file :

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

    You must reimplement it, you cannot avoid it

    0 讨论(0)
  • 2020-12-30 11:04

    Starting from API 11, you can call the following function to achieve your purpose.

    mProgressDialog.setProgressNumberFormat("%1d/%2d kB") 
    
    0 讨论(0)
提交回复
热议问题