19

ProgressDialog在我的应用程序中使用自定义,我可以自定义,但我也想删除progressDialog. 在styles.xml我定义customDialog

<style name="AppTheme" parent="android:Theme.Light" />

<style name="CustomDialog" parent="@android:style/Theme.Dialog">
    <item name="android:background">#7BC047</item>
    <item name="android:textColor">#FFFFFF</item>
    <item name="android:windowBackground">@null</item>
     <item name="android:windowFrame">@null</item>
</style>

为了删除父窗口,我设置windowBackground为 null 和windowFramenull 但它对我不起作用。目前我的自定义进度对话框如下图所示在此处输入图像描述

我正在使用此代码来设置progressDialog.

 private void showProgressDialog() {
    progressDialog = new ProgressDialog(this,R.style.CustomDialog);
    progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    progressDialog.setMessage("Logging in. Please wait.");
    progressDialog.show();
}

所以,请帮助我解决这个问题,任何帮助都应该非常感激。

4

8 回答 8

28

该答案没有解决问题中所述的问题,但是在搜索如何实现自定义进度对话框时,这是指向 SO 的唯一链接。Maksym Dybarskyi也就是说,我在此链接上找到了一个很酷且易于使用的自定义进度对话框。

所有的功劳归于创作者,而不是我。我只是分享

您需要做的就是将其添加到您的依赖项中:

dependencies {
...
   compile 'com.github.d-max:spots-dialog:0.4@aar'
}

然后自定义样式:

<style name="Custom" parent="android:Theme.DeviceDefault.Dialog">
    <item name="DialogTitleAppearance">@android:style/TextAppearance.Medium</item>
    <item name="DialogTitleText">Please Wait</item>
    <item name="DialogSpotColor">@android:color/holo_orange_dark</item>
    <item name="DialogSpotCount">8</item>
</style>

最后,在您的代码中执行以下操作:

private AlertDialog progressDialog;
progressDialog = new SpotsDialog(mContext, R.style.Custom);

//Am using it in an AsyncTask. So in  my onPreExecute, I do this:
public void onPreExecute() {
  super.onPreExecute();
  progressDialog.show();
  ...
 }

//dismiss in onPostExecute
public void onPostExecute(){
   progressDialog.dismiss();
 } 

结果:

在此处输入图像描述

黄点从左到右移动,您可以更改样式中的点数

于 2015-09-08T07:06:16.417 回答
17

我知道我很晚才回答,但我会回答任何方式,

Dialog dialog = new  Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.dialog_login);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
于 2013-04-28T10:35:12.810 回答
7

ProgressDialog在我的应用程序中使用自定义。为此,我们必须遵循一些步骤,如下所示。

step-1 创建一个xml布局custom_progress.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:padding="@dimen/dp_size_10"
    android:layout_height="match_parent">
<ProgressBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerHorizontal="true"
    android:indeterminateTint="@color/colorPrimary"
    android:layout_centerInParent="true"/>
</RelativeLayout>

第 2 步 为此自定义对话框创建一个 java 文件。

package com.example.customeprogress;
import android.app.Dialog;
import android.content.Context;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.WindowManager;

public class CustomProgressDialogue extends Dialog {
    public CustomProgressDialogue(Context context) {
        super(context);

        WindowManager.LayoutParams wlmp = getWindow().getAttributes();

        wlmp.gravity = Gravity.CENTER_HORIZONTAL;
        getWindow().setAttributes(wlmp);
        setTitle(null);
        setCancelable(false);
        setOnCancelListener(null);
        View view = LayoutInflater.from(context).inflate(
                R.layout.custom_progress, null);
        setContentView(view);
    }
}

第 3 步 在您的活动 java 类中创建此自定义类的对象并将其初始化如下使用对象show()dismiss()

CustomProgressDialogue 对象=新的 CustomProgressDialogue(this);

并使用显示此对话框。

对象.show(); 并使用 object.dismiss() 将其解雇;

输出结果。 看看放在这里

于 2019-03-25T18:08:30.770 回答
2

只需在进度对话框的构造函数中检查使用活动名称,

 progressDialog = new ProgressDialog(Activity.this,R.style.CustomDialog);
于 2012-12-17T10:13:59.527 回答
1

在样式上添加这个

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

<item name="android:windowBackground">@android:color/transparent</item>
于 2014-08-20T06:26:02.987 回答
1

将此添加到您的CustomDialogin styles.xml

<item name="android:alertDialogStyle">@style/CustomAlertDialogStyle</item>

style

 <style name="CustomAlertDialogStyle" >
    <item name="android:bottomBright">@android:color/transparent</item>
    <item name="android:bottomDark">@android:color/transparent</item>
    <item name="android:bottomMedium">@android:color/transparent</item>
    <item name="android:centerBright">@android:color/transparent</item>
    <item name="android:centerDark">@android:color/transparent</item>
    <item name="android:centerMedium">@android:color/transparent</item>
    <item name="android:fullBright">@android:color/transparent</item>
    <item name="android:fullDark">@android:color/transparent</item>
    <item name="android:topBright">@android:color/transparent</item>
    <item name="android:topDark">@android:color/transparent</item>
</style>
于 2015-08-01T16:04:08.590 回答
1
<style name="CustomDialog" parent="Theme.AppCompat.Light.Dialog">
   <item name="android:background">#7BC047</item>
   <item name="android:textColor">#FFFFFF</item>
   <item name="android:windowBackground">@color/colorTransparent</item>
</style>

这为我完成了工作。

于 2018-12-11T12:19:47.560 回答
0

这可能不是上述问题的合适答案。但这很有趣,我想在这里添加。

(我无法以我目前的声誉发表评论)

检查此链接

原作者正在添加一个 gif 而不是默认加载对话框,我认为如果有改进,那将是一个很好的替代品。

于 2019-06-20T05:53:47.253 回答