【问题标题】:Using custom ProgressDialog android使用自定义 ProgressDialog android
【发布时间】:2012-12-04 07:19:11
【问题描述】:

我在我的应用程序中使用自定义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,将windowFrame 设置为null,但这对我不起作用。 目前我的自定义进度对话框如下图所示

我正在使用这段代码来设置progressDialog的样式。

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

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

【问题讨论】:

标签: android progressdialog


【解决方案1】:

此答案并未解决问题中所述的问题,但在搜索如何实现自定义进度对话框时,这是指向 SO 的唯一链接。也就是说,我在这个link 上找到了某个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();
 } 

结果:

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

【讨论】:

  • 有没有办法通过使用这个库来改变警报对话框的背景?
  • 是的。 @GuruprasadRao 在下面查看 Khawar 的答案
  • &lt;item name="android:windowBackground"&gt;@color/transparent&lt;/item&gt; add this is style
  • 不要忘记在Proguard中添加以下内容,否则点将不会出现在签名的APK中-keep class dmax.dialog.** { *; }
【解决方案2】:

我知道我已经很晚了,但我会回答任何方式,

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));

【讨论】:

    【解决方案3】:

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

    第一步 创建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>
    

    第二步 为这个自定义对话框创建一个 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);
        }
    }
    

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

    CustomProgressDialogue object=new CustomProgressDialogue(this);

    并使用显示此对话框。

    object.show(); 并使用解雇它 object.dismiss();

    输出结果。 see out put here

    【讨论】:

    • 谢谢@Deepak gupta
    • 这是我正在寻找的确切解决方案。它还有助于管理警报对话框的高度和宽度。谢谢
    【解决方案4】:

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

     progressDialog = new ProgressDialog(Activity.this,R.style.CustomDialog);
    

    【讨论】:

      【解决方案5】:

      在样式上添加这个

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

      【讨论】:

      • 您的回答似乎微不足道。请更详细地描述您打算做什么。
      【解决方案6】:

      将此添加到您的CustomDialog 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>
      

      【讨论】:

        【解决方案7】:
        <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>
        

        这为我完成了这项工作。

        【讨论】:

          【解决方案8】:

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

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

          查看link

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

          【讨论】:

          • 请将链接内容添加到您的答案中
          • 我已经添加了。其他人看不到吗.. :| LInk
          猜你喜欢
          • 2013-11-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-02-18
          • 2017-03-06
          • 1970-01-01
          • 2017-10-08
          相关资源
          最近更新 更多