android中的alertdialog里面的进度指示器

时间:2013-01-03 09:17:58

标签: android

在Android中需要一个类似的屏幕,即将进度指示器放在警报视图中。

enter image description here

4 个答案:

答案 0 :(得分:1)

Android有ProgressDialog可以做同样的事情,显示对话框,显示标题和消息,还显示不确定的进度指示器,但它看起来会比屏幕截图略有不同。

但是,Android文档并未建议使用ProgressDialog来表示加载或不确定进度:

  

避免使用ProgressDialog
  Android包含另一个名为ProgressDialog的对话框类,它显示带有进度条的对话框。但是,如果   你需要指出加载或不确定进度   而是遵循Progress & Activity的设计指南并使用   布局中的ProgressBar。

所以,you will need to define your custom dialog.

答案 1 :(得分:0)

  1. 为对话框内容创建布局xml。
  2. 将其充气到视野。
  3. 使用您的视图调用ALertDialog.setView

答案 2 :(得分:0)

   private static final int DIALOG_PROGRESS = 4;
  private ProgressDialog mProgressDialog;
        private int mProgress;
        private Handler mProgressHandler;

        @Override
        protected Dialog onCreateDialog(int id) {
            switch (id) {
            case DIALOG_PROGRESS:
                mProgressDialog = new ProgressDialog(Test.this);
                mProgressDialog.setIconAttribute(android.R.attr.alertDialogIcon);
                mProgressDialog.setTitle("R.string.select_dialog");
                mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                mProgressDialog.setMax(MAX_PROGRESS);
                mProgressDialog.setButton(DialogInterface.BUTTON_POSITIVE,
                        "R.string.alert_dialog_hide", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {

                        /* User clicked Yes so do some stuff */
                    }
                });
                mProgressDialog.setButton(DialogInterface.BUTTON_NEGATIVE,
                        "R.string.alert_dialog_cancel", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {

                        /* User clicked No so do some stuff */
                    }
                });
                return mProgressDialog;
            }
            return null;
        }

        /**
         * Initialization of the Activity after it is first created.  Must at least
         * call {@link android.app.Activity#setContentView(int)} to
         * describe what is to be displayed in the screen.
         */
        @Override
      protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            showDialog(DIALOG_PROGRESS);
            mProgressHandler = new Handler() {
                @Override
                public void handleMessage(Message msg) {
                    super.handleMessage(msg);
                    if (mProgress >= MAX_PROGRESS) {
                        mProgressDialog.dismiss();
                    } else {
                        mProgress++;
                        mProgressDialog.incrementProgressBy(1);
                        mProgressHandler.sendEmptyMessageDelayed(0, 100);
                    }
                }
            };
        }
    }

Refrence from here你应该通过Handler方法处理并轻松搞定。

答案 3 :(得分:0)

通过从布局中展开视图来创建CustomAlertDialog

布局应位于RelativeLayout,以便您可以通过将属性设为ProgessDialogCENTER_HORIZONTAL来放置CENTER_VERTICAL该布局的中心。

参考:Link