带有自定义主题的 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'
我有一个 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'