Android “进度”对话框在棒棒糖制作前的设备上奇怪地出现

Android “进度”对话框在棒棒糖制作前的设备上奇怪地出现,android,progressdialog,android-styles,Android,Progressdialog,Android Styles,“我在棒棒糖前的设备上的进度”对话框如下所示: 看到那个双层窗户了吗?我不知道为什么会这样 代码 正在初始化进度对话框,如下所示: progressDialog = new ProgressDialog(context); progressDialog.setMessage(messsage); progressDialog.setIndeterminate(true); progressDialog.setCancelable(false); 在values和values-21中定义了这

“我在棒棒糖前的设备上的进度”对话框如下所示:

看到那个双层窗户了吗?我不知道为什么会这样

代码

  • 正在初始化进度对话框,如下所示:

    progressDialog = new ProgressDialog(context);
    progressDialog.setMessage(messsage);
    progressDialog.setIndeterminate(true);
    progressDialog.setCancelable(false);
    
  • 在valuesvalues-21中定义了这样的样式:

  • 
    @颜色/黑色
    @颜色/白色
    @颜色/黑色
    @颜色/橙色
    @颜色/橙色
    @颜色/暗度
    
    不要设置这些对话框的样式,如果你想在lolipop之前的设备中使用材质样式,那么就利用库


    它非常容易使用。

    我的解决方法是为棒棒糖制作前创建一个单独的主题和样式,参数
    android:windowBackground
    为透明。这删除了后面的第二个背景

    <style name="AppCompatAlertDialogStyleNoWindow" parent="Theme.AppCompat.Light.Dialog.Alert">
        <item name="android:windowBackground">@color/transparent</item>
    </style>
    
    
    @彩色/透明
    

    然后将此样式添加为棒棒糖前主题的android:alertDialogTheme。

    我回复有点晚,但这就是我解决问题的方法。
    我创建了一个单独的
    v-14
    styles.xml
    ,并定义了一个样式,如下所示

    values-v14/styles.xml

    <style name="AlertDialog.Holo" parent="@android:style/Theme.Holo.Light.Dialog">
        <item name="android:textColorPrimary">@color/black</item>
        <item name="android:textColor">@color/black</item>
        <item name="android:textAppearance">@style/Helvetica.Regular</item>
        <item name="android:windowTitleStyle">@style/DialogTitleStyle</item>
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="android:windowBackground">@android:color/transparent</item>
    </style>
    

    到目前为止,它工作得很好!希望它能帮助一些人。

    你的答案不适用于棒棒糖前(在API 19上测试)。但是我找到了解决方案:你需要使用<代码> Android .Vo.V7.App.AdvtReals(在导入设置)

    我不认为有PrimeScript对话框的支持版本。不确定你的特定用例,但是作为一个通用的UI考虑,你可能想考虑使用加载视图的ViewFlipper(例如,用PrimeScript对话的FrAMLayayOUT)而不是进程对话框。ProgressDialogs正在阻止…因此,如果加载状态挂起或需要一段时间,用户将被阻止执行其他操作。我们是否可以在不使用此库的情况下实现此功能?提到的库是开源的,您显然可以检查代码并尝试实现您自己的。图书馆是为了节省你的时间。为了便于学习,您可以查看仅测试此API 16及以上版本的代码
    <style name="AlertDialog.Theme" parent="Theme.AppCompat.Light.Dialog">
        <item name="android:textColorPrimary">@color/black</item>
        <item name="android:textColor">@color/black</item>
        <item name="colorAccent">@color/zifycolor</item>
        <item name="colorPrimary">@color/zifycolor</item>
        <item name="colorPrimaryDark">@color/zifycolorDarker</item>
        <item name="android:windowTitleStyle">@style/DialogTitleStyle</item>
        <item name="buttonBarButtonStyle">@style/AlertDialogButtonStyle</item>
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>
    
    /**
     * Create a progress dialog. The appropriate theme gets applied.
     *
     * @param context  valid context with a window
     * @param messsage message to show
     * @return {@code ProgressDialog} instance
     */
    public static ProgressDialog createProgressDialog(@NonNull final Context context, @NonNull String messsage) {
        ProgressDialog progressDialog;
    
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP)
            progressDialog = new ProgressDialog(context, R.style.AlertDialog_Theme);
        else
            progressDialog = new ProgressDialog(context, R.style.AlertDialog_Holo);
    
        progressDialog.setMessage(messsage);
        progressDialog.setCancelable(false);
        return progressDialog;
    
    }