0

这是我的进度对话框

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

鉴于我可以强制按钮变为 VISIBLE INVISIBLE GONE 与以下:

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

我曾希望能够对 ProgressBar 做同样的事情,这将为文本提供更多空间来描述任务完成后按下哪个按钮。

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

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

请注意,我不想关闭对话框,只是强制 ProgressBar 不可见。

如果它不能完成,那就这样吧,但任何帮助都会很棒

4

1 回答 1

1

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

如果你真的想坚持使用 a ProgressDialog,你可以通过在对话框中获取一个 View 来绕过它(例如,一个 Button 或通过 获得焦点的 View getCurrentFocus()),然后获取 的根 ViewDialog并遍历它的子项,直到你找到一个ProgressBar。我不会推荐这个。

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

于 2013-11-11T15:24:55.437 回答