使用setContentView的Android ProgressDialog

9
我已经阅读了大量关于这个问题的内容,但似乎没有人做过或尝试过。
因此,我有一个扩展ImageView的对象,在其中调用进度对话框,并将进度对话框的内容设置为ImageView(即尝试在ImageView中绘制进度对话框...视图)。
    loadingProgressDialog.setContentView(this); //this is: LoaderImageView extends ImageView        
    loadingProgressDialog.setIndeterminate(true);
    loadingProgressDialog.show();

我收到了一个错误信息:必须在添加内容之前调用requestFeature()。

我之前在很多帖子中看到过这个错误信息,答案似乎很明显。我已经尝试设置所有特性:

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

首先,我不明白为什么需要这个?其次,它们都无法正常工作!

因此,问题是我能否将ProgressDialog的contentView设置为ImageView?如果可以,那么我做错了什么?

3个回答

44
我成功了;事实上,这很容易;使用

loadingProgressDialog.setContentView(this) 

之后

loadingProgressDialog.show() 
下面这些代码行是不必要的:
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);

也就是说:

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

这就足够了。

我希望这能帮到其他寻找此问题答案的人。


1
奇怪的是,在.show()之后放置setContentView()使它在我的情况下工作。有趣。谢谢! - LargeGlasses
2
哇哦!从来没想到setContentView能在.show()之后放置。 - sud007
这绝对是问题的正确答案。 - m0skit0

0
如果你阅读ProgressDialog的开发文档,它会说“显示进度指示器和可选的文本消息或视图的对话框。只能同时使用文本消息或视图。”
看起来你正在尝试两者兼备。可能是你遇到问题的原因。

我明白你的意思,这似乎不是我更新的原始帖子中的错误。我的想法来自http://developer.android.com/guide/topics/ui/dialogs.html#CustomDialog。 - Blundell

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接