Android进行了ProgressDialog ProgressBar Invisible

时间:2013-11-11 15:09:45

标签: java android progressdialog

这是我的ProgressDialog

progressBar = new ProgressDialog(Wallpapers.this);
progressBar.setCancelable(false);
progressBar.setMessage("Downloading " + downloadedFile + ".png");
progressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
progressBar.setProgress(0);
progressBar.setMax(100);
progressBar.setButton(DialogInterface.BUTTON_NEGATIVE, "No", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        dialog.dismiss();
    }
});

progressBar.setButton(DialogInterface.BUTTON_POSITIVE, "Yes", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialog, int which) {
        dialog.dismiss();
    }
});
progressBar.show();

鉴于我可以通过以下方式强制按钮变为可见的隐形:

progressBar.getButton(ProgressDialog.BUTTON_POSITIVE).setVisibility(View.INVISIBLE);

我原本希望能够对ProgressBar做同样的事情,这样可以让文本有更多空间来描述任务完成后要按哪个按钮。

但以下是我最好的猜测,它创建了一个NullPointer

progressBar.getButton(ProgressDialog.STYLE_HORIZONTAL).setVisibility(View.INVISIBLE);

请注意我不打算关闭Dialog,只强制ProgressBar不可见。

如果不能做到那么就这样吧,但任何帮助都会很棒

1 个答案:

答案 0 :(得分:1)

ProgressDialog.STYLE_HORIZONTALProgressDialog.STYLE_SPINNER不是按钮,也不是AlertDialog类中按钮的标识符。

如果你真的想坚持ProgressDialog,你可以通过在对话框中获取一个视图(例如一个按钮或通过getCurrentFocus()聚焦的视图)来破解它,然后获取Dialog的根视图并遍历它的子项,直到找到ProgressBar。我不推荐这个。

更好的选择是创建包含ProgressDialog的自己的布局,并将其设置为AlertDialog的setView()视图。这样您就可以为条形图定义自己的ID,并通过Dialog的findViewById()方法检索它。