带有setContentView的Android ProgressDialog

时间:2010-12-04 00:40:31

标签: android imageview progressdialog custom-view

我已经阅读了很多关于此的内容,并且看不到任何人之前已经完成或尝试过。

所以我有一个扩展ImageView的对象,然后在此我调用一个进度对话框并将进度对话框的内容设置为imageview(即尝试在imageview..view中绘制进度对话框。)

    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 个答案:

答案 0 :(得分:43)

我做到了; 事实上,这很容易;使用

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 :(得分:0)

如果您阅读progressDialog开发人员文档,则会显示“显示进度指示器和可选文本消息或视图的对话框。只能同时使用文本消息或视图。”

看起来你正试图做到这两点。可能是你问题的原因。

答案 2 :(得分:0)

知道了。

线索在类名中,当你不需要对话时不要使用ProgressDialog(http://developer.android.com/reference/android/app/ProgressDialog.html)!

我将我的实现改为使用:ProgressBar(http://developer.android.com/reference/android/widget/ProgressBar.html),效果很好。

无论如何为耳朵欢呼!

这就是我为此寻找的原因:

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

教程展示如何在加载图像时使用Spinner。享受