进度对话问题在android 4.4.4下面

时间:2015-07-16 08:01:17

标签: android styles progressdialog

我在我的android应用程序中使用进度对话框。它在android 5.0 +上看起来不错。但是在android 4.4.4下面它显示了两层。我已经附加了屏幕截图。我正在使用样式

<style name="AlertDialogCustom" parent="Theme.AppCompat.Dialog">
    <item name="colorAccent">#FFFFFF</item>
        <item name="android:textColorPrimary">#CCCCCC</item>
        <item name="android:background">#E43F3F</item>
</style>

和进度对话框enter image description here

final ProgressDialog progressDialog = new ProgressDialog(SplashActivity.this,
                    R.style.AlertDialogCustom);
            progressDialog.setIndeterminate(true);
            progressDialog.setMessage("Authenticating...");
            progressDialog.show();

如何解决这个问题。请建议我。

5 个答案:

答案 0 :(得分:2)

您应该从

替换导入
import android.app.AlertDialog;

为:

import android.support.v7.app.AlertDialog;

希望有所帮助!

答案 1 :(得分:0)

您可以将这些添加到您的风格中:

<item name="android:windowFrame">@null</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:backgroundDimEnabled">true</item>

在我的情况下效果很好。

答案 2 :(得分:0)

我有同样的情况(在API 16中测试过),将导入更改为

import android.support.v7.app.AlertDialog;

或添加

<item android:windowBackground="@android:color/transparent" />

这种风格对我没用。

我创建了values-v21文件夹,其中包含默认的素材样式并添加了

 <item name="android:background">@android:color/transparent</item>
 <item name="android:windowBackground">@android:color/transparent</item>

style.xml文件夹中的values文件。

答案 3 :(得分:0)

您应该在Android&lt; = API 20上为ProgressDialog创建专用样式。

<style name="AppTheme.AlertDialog" parent="Theme.AppCompat.Light.Dialog.Alert">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

<style name="AppTheme.ProgressDialog" parent="AppTheme.AlertDialog">
    <item name="android:windowBackground">@android:color/transparent</item>
</style>

然后,您必须应用ProgressDialog样式才能使其正常工作:

    if (Build.VERSION.SDK_INT < 21)
    {
        mProgress = new ProgressDialog(mActivity, R.style.AppTheme_ProgressDialog);
    }
    else
    {
        mProgress = new ProgressDialog(mActivity);
    }
....

希望它会有所帮助。

答案 4 :(得分:-1)

我通过外部库https://github.com/afollestad/material-dialogs修复此问题 简单而美好。

new MaterialDialog.Builder(this)
    .title(R.string.progress_dialog)
    .content(R.string.please_wait)
    .progress(true, 0)
    .progressIndeterminateStyle(true)
    .show();