带有自定义主题的 ProgressDialog

ProgressDialog with custom theme

我有一个 activity 有一个关联的主题(在 AndroidManifest.xml 中)

<activity
        android:name=".BenchTestActivity"
        android:parentActivityName=".HomeActivity"
        android:theme = "@style/AppTheme.CaeTheme">

AppTheme.CaeTheme 不包含任何内容(目前)但 AppTheme 是:

<style name="AppTheme" parent="Theme.AppCompat.Light">
    <item name="android:background">@color/colorPrimary</item>
</style>

(colorPrimary为深蓝色)

现在我在上面提到的 activity 中定义了一个 progressDialog。

progressDialog = new ProgressDialog(BenchTestActivity.this);
progressDialog.setProgressStyle(R.style.ProgressDialog);

这里是 ProgressDialog 样式:

<style name="ProgressDialog">
    <item name="android:alertDialogStyle">@style/CustomAlertDialogStyle</item>
    <item name="android:layout_centerHorizontal">true</item>
    <item name="android:layout_centerVertical">true</item>
    <item name="android:visibility">gone</item>
</style>
<style name="CustomAlertDialogStyle">
    <item name="android:background">@color/colorBackgroundProgressDialog</item>
    <item name="android:textColorPrimary">#e6e6e6</item>
</style>

colorBackgroundProgressDialog 为浅灰色。我期待获得该颜色作为我的进度对话框的背景,但事实并非如此(背景颜色是深蓝色,colorPrimary)。所以 activity 主题的背景是获胜的。那么,如何为进度对话框设置自定义颜色?

提前致谢。

使用 accepts theme as argument 的构造函数并传递适当的主题。



    ProgressDialog progressDialog = new ProgressDialog(context, R.style.MyProgressDialogTheme);
    progressDialog.show();


styles.xml中:

<style name="MyProgressDialogTheme" parent="ThemeOverlay.AppCompat.Dialog.Alert">
    <!-- override attributes here -->
</style>

在你的 styles.xml

<style name="Custom" parent="android:Theme.DeviceDefault.Dialog">
    <item name="DialogTitleAppearance">@android:style/TextAppearance.Medium</item>
    <item name="DialogTitleText">Loading……</item>  
    <item name="DialogSpotColor">@android:color/holo_orange_dark</item>
    <item name="DialogSpotCount">4</item>
</style>

并且在你的 activity、java 中:

SpotsDialog spotsDialog = new SpotsDialog(Context,R.style.Custom);
spotsDialog.show();  //where you want
spotsDialog.dismiss(); //where you want

并添加依赖关系

compile 'com.github.d-max:spots-dialog:0.7@aar'