你好在我的应用程序中我有简单的progressDialog。我使用一些简单的代码来管理它的颜色,但api低于21的问题。
通常看起来应该是
但对于较低的api,它看起来
有一种方法可以让它看起来像第一张图片吗?
我的progressDialog代码
@Override
public Dialog onCreateDialog(int dialogId) {
switch (dialogId) {
case PLEASE_WAIT_DIALOG:
final ProgressDialog dialog = new ProgressDialog(this,R.style.AppCompatAlertDialogStyle);
dialog.setTitle(getResources().getString(R.string.dialogWysylka));
dialog.setMessage(getResources().getString(R.string.dialogWysylkaDol));
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setCancelable(false);
return dialog;
}
和xml用于管理颜色:
<style name="AppCompatAlertDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="colorAccent">@color/white</item>
<item name="android:textColorPrimary">@color/white</item>
<item name="android:textColor">@color/white</item>
<item name="android:background">@color/brownmuseum</item>
</style>
答案 0 :(得分:0)
使用Android O,ProgressDialog现已正式弃用。建议采用另一种方法
此类在API级别O中已弃用。在活动内部使用ProgressBar内联等进度指示器,而不是使用此模式对话框。
您可以使用
<style name="MyDialogTheme" parent="Theme.AppCompat.Light.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
</style>
以下API
答案 1 :(得分:0)
尝试使用此代码获取IndeterminateDrawable和setColorFilter。
final ProgressDialog progress = new ProgressDialog(this);
progress.setMessage(getString(R.string.progress_message));
progress.setIndeterminate(true);
progress.setCancelable(false);
//if lower API 21
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) {
Drawable drawable = new ProgressBar(this).getIndeterminateDrawable().mutate();
drawable.setColorFilter(ContextCompat.getColor(this, R.color.white),
PorterDuff.Mode.SRC_IN);
progress.setIndeterminateDrawable(drawable);
}
progress.show();