Why the background of ProgressDialog doesn't set to the transparent?
Asked Answered
L

5

25

I want to set the back ground to the transparent , so I have set the following code in

styles.xml
<style name="dialog" parent="@android:style/Theme.Dialog">  
            <item name="android:windowFrame">@null</item>  
            <item name="android:windowIsFloating">true</item>  
            <item name="android:windowContentOverlay">@null</item>  
            <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>  
            <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>  
            <item name="android:windowBackground">@android:color/transparent</item>  
            <item name="android:windowNoTitle">true</item> 
        </style> 

And I have use the Progressdialog like the following code in JAVA file and in fragment.

Activity activity = getActivity() ;
mProgressDialog = new ProgressDialog(activity,R.style.dialog) ;
mProgressDialog.setCancelable(false) ;
mProgressDialog.show() ;

But I get the progress like the following picture , and it doesn't has transparent background.

enter image description here

Why the background doesn't change to the transparent ?

Larcher answered 22/2, 2014 at 16:49 Comment(2)
possible duplicate of Create a progressDialog only with the spinner (in the middle)Subspecies
See also Dialog with transparent background in AndroidDextroamphetamine
S
71

create custom MyTheme in values\styles.xml

<style name="MyTheme" parent="android:Theme.Holo.Dialog">
    <item name="android:alertDialogStyle">@style/CustomAlertDialogStyle</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:textColorPrimary">#FFFFFF</item>
     <item name="android:backgroundDimEnabled">false</item>
    <item name="android:textColor">#FFFFFF</item>
    <item name="android:textStyle">normal</item>
    <item name="android:textSize">12sp</item>
</style>

And also add this CustomAlertDialogStyle in values\styles.xml

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

And set ProgressDialog like:

 pd = new ProgressDialog(getActivity(),R.style.MyTheme);
 pd.setCancelable(false);
 pd.setProgressStyle(android.R.style.Widget_ProgressBar_Small);
 pd.show();
Superstition answered 22/2, 2014 at 17:1 Comment(5)
@Simple Plan , i'm sorry to bother you, but is there a way to change the progress widget via style ?Dovap
#M D, Is it possible to change its (progress bar) position with respect to other elements ? Currently its center align both vertically & horizontally.Saxony
@Saxony I am not trying this but you can set Gravity in your style .Superstition
Tried but no success ! Apart from this, nice solution.Saxony
Thanks. Also you may add to a style a following line: <item name="android:progressBarStyle">@android:style/Widget.Holo.Light.ProgressBar.Large</item> in order to make it large.Dissuasive
A
12

You can use this code,work fine in devices >= 19 (Kitkat)

progress = ProgressDialog.show(Splash.this, null, null, true);
            progress.setContentView(R.layout.elemento_progress_splash);
            progress.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

            //progress.show();

enter image description here

Ambie answered 18/1, 2016 at 20:3 Comment(2)
If you do ProgressDialog.show(), you do not need to call progress.show(). Otherwise, this answer works fine.Eimile
If you do ProgressDialog.show(Splash.this, null, null, true) you do not have to do progress.show(). Otherwise this solution works well.Eimile
G
7

Try this

mProgressDialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

EDIT:

Try adding this to the layout xml

        <item name="android:backgroundDimEnabled">true</item>
        <item name="android:background">@android:color/transparent</item>
Gelhar answered 22/2, 2014 at 16:55 Comment(1)
Sorry...it is the same. But the another answer is working. Also thank for your answer.Larcher
F
1

Just try this. It's working for me.

In styles.xml

<style name="TransparentProgressDialog">
    <item name="android:windowFrame">@null</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowTitleStyle">@null</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
    <item name="android:backgroundDimEnabled">true</item>
    <item name="android:background">@android:color/transparent</item>

  </style>

In Activity/Fragment:

ProgressDialog pDialog = new ProgressDialog(this, R.style.TransparentProgressDialog);
Faller answered 24/12, 2019 at 14:1 Comment(0)
T
0

In my case, i just define at color.xml the variables

For light style: <color name="accent_material_light">#000000</color>

For dark style: <color name="accent_material_dark">#000000</color>

These changes affect the whole system

Tonsillectomy answered 11/7, 2017 at 17:3 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.