Material Design progressdialog

use*_*732 15 android material

 alertDialog = new ProgressDialog(this);                          
 alertDialog.setMessage(getResources().getString(R.string.loader));
 alertDialog.setCancelable(false);
 alertDialog.show();
Run Code Online (Sandbox Code Playgroud)

简单地说,当我这样做时,绿色圆圈显示除了它之外的单词loading.但是,当我不使用进度对话框,并且我在页面上使用进度条时,我得到一个粉红色,因为我在styles.xml中定义了以下内容

<item name="colorPrimary">@color/pink</item>
<item name="colorPrimaryDark">@color/pink</item>
<item name="colorAccent">@color/pink</item>
Run Code Online (Sandbox Code Playgroud)

获取圆形粉红色的解决方案是什么,如页面上的进度条?

小智 11

对于API 21+,您可以定义以下样式以为材质进度对话框着色.请注意,values-v21如果您支持较低的平台,则应该在此之下.

<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>
Run Code Online (Sandbox Code Playgroud)

<item name="colorAccent">适用于AppCompat,<item name="android:colorAccent">适用于API 21+.即使使用新的v22.1Support lib AppCompatDialog,材料进度对话框也无法与AppCompat一起使用.

你可以在这里看到Chris Banes的回答,说他不会向后移植Progress Dialogs,因为它们是"糟糕的模式".

  • @Zapnologica根据开发人员指南:[_"但是,如果您需要指示加载或不确定进度,您应该遵循Progress&Activity的设计指南并在布局中使用ProgressBar."_](http:// developer.android.com/guide/topics/ui/dialogs.html)而不是'ProgressDialog`.所以基本上在某处嵌入了一个`ProgressBar`并根据需要隐藏/取消隐藏它.我同意ProgressDialog往往是一个糟糕的模式(特别是如果不可取消),但我希望他们会在所有地方更加前瞻和明确.也许甚至在ProgressDialog文档中提到它. (5认同)
  • 关于Chris Banes的帖子评论的链接现在似乎已经死了. (3认同)