web-dev-qa-db-ja.com

マテリアルデザインの進捗ダイアログ

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

単純にこれを行うと、緑色の円がWordのロードとともに表示されます。ただし、進行状況ダイアログを使用せず、ページで進行状況バーを使用すると、styles.xmlで以下を定義しているため、ピンク色が表示されます。

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

ページのプログレスバーのように円のピンク色を取得する解決策は何ですか?

15
user3278732

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>

<item name="colorAccent">はAppCompat用、<item name="Android:colorAccent">はAPI 21以降用です。新しいv22.1サポートライブラリ AppCompatDialog を使用しても、マテリアル進行ダイアログはAppCompatで機能しません。

Chris Banesの回答 here は、「悪いパターン」であるため、Progress Dialogをバックポートしないことを示しています。

11
Oguz Babaoglu

この質問は少し古いですが、AppCompatを使用している場合は、次の属性を追加してください。

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

あなたのスタイルで

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

お役に立てれば!

2