Material Design progressdialog

2020-06-09 04:19发布

 alertDialog = new ProgressDialog(this);                          
 alertDialog.setMessage(getResources().getString(R.string.loader));
 alertDialog.setCancelable(false);
 alertDialog.show();

Simply when I do this, green circle shows up with the word loading besides it. However when i DONT USE progress dialog, and i use a progressbar on the page I get a pink color as i have defined the below in my styles.xml

<item name="colorPrimary">@color/pink</item>
<item name="colorPrimaryDark">@color/pink</item>
<item name="colorAccent">@color/pink</item>

What is the solution of getting the circle pink color as in the progress bar on page?

2条回答
Animai°情兽
2楼-- · 2020-06-09 04:34

For API 21+ you can define the following style to colour the material progress dialog. Note that this should be under values-v21 if you support lower platforms.

<style name="MyTheme" parent="Theme.AppCompat.Light.NoActionBar">
    <item name="android:alertDialogTheme">@style/MyAlertDialog</item>
</style>

<style name="MyAlertDialog" parent="android:Theme.Material.Light.Dialog.Alert">
    <item name="android:colorAccent">@color/pink</item>
</style>

<item name="colorAccent"> is for AppCompat whereas <item name="android:colorAccent"> is for API 21+. Material progress dialogs don't work with AppCompat, even with the new v22.1 Support lib AppCompatDialog.

You can see Chris Banes' answer here stating that he will not backport Progress Dialogs because they are "a bad pattern".

查看更多
冷血范
3楼-- · 2020-06-09 04:54

This question is a bit old, but if you are using AppCompat, just add this attribute:

<item name="android:tint">@color/my_color_accent</item>

In your style

<style name="MaterialDialog" parent="Theme.AppCompat.Light.Dialog">
    <item name="android:tint">@color/my_color_accent</item>
</style>

Hope this helps!

查看更多
登录 后发表回答