具有自定义主题的ProgressDialog

时间:2017-05-09 15:54:32

标签: java android android-layout android-view progressdialog

我有一个主题相关的活动(在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是深蓝色)

现在我在上面提到的活动中定义了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)。因此,活动主题的背景是赢。那么,如何为进度对话框设置自定义颜色?

提前致谢。

2 个答案:

答案 0 :(得分:1)

使用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>

答案 1 :(得分:0)

你的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>

在你的活动中,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'