Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 自定义进程对话框_Android_Android Asynctask_Customization_Progressdialog - Fatal编程技术网

Android 自定义进程对话框

Android 自定义进程对话框,android,android-asynctask,customization,progressdialog,Android,Android Asynctask,Customization,Progressdialog,我有一个问题,改变颜色或什么的progressDialog。我已经看到了许多变化的例子,但没有满足我的需要,我需要你的帮助这是我的代码: @Override protected Dialog onCreateDialog(int id) { switch (id) { case DIALOG_DOWNLOAD_PROGRESS: mProgressDialog = new ProgressDialog(this)

我有一个问题,改变颜色或什么的progressDialog。我已经看到了许多变化的例子,但没有满足我的需要,我需要你的帮助这是我的代码:

 @Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
            case DIALOG_DOWNLOAD_PROGRESS: 
                mProgressDialog = new ProgressDialog(this);
                mProgressDialog.setMessage(getApplicationContext().getString(R.string.download));
                mProgressDialog.setIndeterminate(false);
                mProgressDialog.setMax(100);
                mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                mProgressDialog.setProgressDrawable(new ColorDrawable(android.graphics.Color.BLUE)); // my bad test
                mProgressDialog.setCancelable(true);
                mProgressDialog.show();
                return mProgressDialog;
            default:
                return null;

        }

    }

重写ProgressDialog的onCreate方法,并对其进度条进行任何更改

ProgressDialog mProgress = new ProgressDialog(this){
    @Override
    protected void onCreate(android.os.Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //Now we retrive this dialog ProgressBar
        ProgresBar bar = (ProgressBar) findViewById(android.R.id.progress);
        //Do what you want with it here
    };
};

您好,我想您可以使用dialog类创建自定义进度对话框。 您需要使用自定义视图设置对话框的contentivew

试试这个。

这是(谁给了我决定性的帮助)和更多建议的结合:

    mProgressDialog = new ProgressDialog(MainActivity.this) {
        @Override
        protected void onCreate(android.os.Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            ProgressBar bar = (ProgressBar) findViewById(android.R.id.progress);
            bar.getProgressDrawable().setColorFilter(0xFF22C819 /*XXX FIXME getColor(R.color.colorAccent)*/, android.graphics.PorterDuff.Mode.SRC_IN);
            bar.getIndeterminateDrawable().setColorFilter(0xFF22C819 /*XXX FIXME getColor(R.color.colorAccent)*/, android.graphics.PorterDuff.Mode.SRC_IN);
        }
    };
这会将进度条颜色设置为所需的值,而与渲染为不确定还是0‥100无关(所讨论的应用程序同时使用这两种颜色,首先是不确定,直到知道要下载多少数据为止)


我唯一还没有弄清楚的是如何从
colors.xml
中获取一种颜色,而不是
0xAARRGGBB
符号。欢迎编辑

改变颜色还是什么?你到底想做什么?用一个可绘制的颜色来更改黄色进度条(默认值),如果不能,用另一种颜色来更改黄色进度条(默认值),这正是你问题的答案。ProgressDialog使用android中包含的特殊布局文件来实例化和设置包含ProgressBar的视图层次结构,在这种情况下,它会向您显示表示某个操作进度的图形条。如果您想更改ProgressDialog中进度条的外观,实际上您将更改ProgressDialog中使用的进度条的外观。在我的示例中,您对ProgressBar所做的任何操作都将反映在ProgressDialog的外观上。如果您有疑问,请查看ProgressDialog的源代码。抱歉,这是打字错误<代码>findViewById不是
视图。findViewById
对不起,我的朋友,我用你的代码替换了变量“private ProgressDialog mProgressDialog;”,它给我带来了NullPointerException,这就是一个例子。你需要根据你的对象和代码来调整它。