自定义ProgressDialog

时间:2014-02-16 17:49:23

标签: android android-asynctask customization progressdialog

我有问题要改变颜色或者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;

        }

    }

3 个答案:

答案 0 :(得分:2)

覆盖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
    };
};

答案 1 :(得分:0)

您好我认为您可以使用Dialog类创建自定义进度对话框。 您需要使用自定义视图设置对话框。

试试这个。 https://stackoverflow.com/a/26821095/1554031

答案 2 :(得分:0)

the answer by @VallyN的组合(谁给了我这个决定性的帮助)和更多的recherche:

    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符号。编辑欢迎!