Android ProgressDialog with setContentView

2019-01-18 06:37发布

问题:

I've read a hell of a lot about this, and can't see anyone who's done or tried it before.

So I've got an object that extends ImageView, then within this I call a progress dialog and set the progress dialogs's content to the imageview (i.e. attempting to draw the progress dialog in the imageview..view.)

    loadingProgressDialog.setContentView(this); //this is: LoaderImageView extends ImageView        
    loadingProgressDialog.setIndeterminate(true);
    loadingProgressDialog.show();

And I get the error: requestFeature() must be called before adding content

Now I've seen this error before on loads of posts and yes the answer seems obvious. I've tried to set all the features:

loadingProgressDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
loadingProgressDialog.requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
loadingProgressDialog.getWindow().requestFeature(Window.FEATURE_PROGRESS);
loadingProgressDialog.getWindow().requestFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

But first I don't understand why I need this? And second none of them work anyway!

So the question is can I set the ProgressDialog contentView to an ImageView? If so what have I gotten wrong?

回答1:

I made it; in fact, it's very easy; using

loadingProgressDialog.setContentView(this) 

after

loadingProgressDialog.show() 

The following lines of code are unnecessary:

loadingProgressDialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
loadingProgressDialog.requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
loadingProgressDialog.getWindow().requestFeature(Window.FEATURE_PROGRESS);
loadingProgressDialog.getWindow().requestFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

that's to say:

loadingProgressDialog.setIndeterminate(true);
loadingProgressDialog.show();
loadingProgressDialog.setContentView(this); //this is: LoaderImageView extends ImageView 

that is enough.

I hope this can help other people looking for answer about this question.



回答2:

If you read the progressDialog developer doc it says "A dialog showing a progress indicator and an optional text message or view. Only a text message or a view can be used at the same time."

It looks like you are trying to do both. Possibly the cause of your issue.



回答3:

Got it.

The clue was in the class names, don't use ProgressDialog ( http://developer.android.com/reference/android/app/ProgressDialog.html ) when you don't need a dialog!

I changed my implementation to use: ProgressBar ( http://developer.android.com/reference/android/widget/ProgressBar.html ) and it works great.

Cheers for the ear anyway!

This is why I was looking for it for:

http://www.anddev.org/novice-tutorials-f8/imageview-with-loading-spinner-t49439.html

Tutorial showing how you can have a Spinner whilst an image is loading. Enjoy