这是我的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不可见。
如果不能做到那么就这样吧,但任何帮助都会很棒
答案 0 :(得分:1)
ProgressDialog.STYLE_HORIZONTAL
和ProgressDialog.STYLE_SPINNER
不是按钮,也不是AlertDialog类中按钮的标识符。
如果你真的想坚持ProgressDialog
,你可以通过在对话框中获取一个视图(例如一个按钮或通过getCurrentFocus()
聚焦的视图)来破解它,然后获取Dialog
的根视图并遍历它的子项,直到找到ProgressBar
。我不推荐这个。
更好的选择是创建包含ProgressDialog
的自己的布局,并将其设置为AlertDialog的setView()
视图。这样您就可以为条形图定义自己的ID,并通过Dialog的findViewById()
方法检索它。