web-dev-qa-db-ja.com

ProgressDialogの背景が透明に設定されないのはなぜですか?

バックグラウンドを透明に設定したいので、次のコードを設定しました

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> 

そして、Java fileProgressdialogで次のコードのようにfragmentを使用しました。

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

しかし、次の図のような進行状況が得られ、背景が透明ではありません。

enter image description here

背景が透明に変わらないのはなぜですか?

24
Martin

values\styles.xmlにカスタムMyThemeを作成します

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

また、values\styles.xmlにこのCustomAlertDialogStyleを追加します

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

ProgressDialogを次のように設定します。

 pd = new ProgressDialog(getActivity(),R.style.MyTheme);
 pd.setCancelable(false);
 pd.setProgressStyle(Android.R.style.Widget_ProgressBar_Small);
 pd.show();
66
M D

このコードを使用して、デバイスで正常に動作することができます> = 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

12
David Hackro

これを試して

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

編集:

これをレイアウトxmlに追加してみてください

        <item name="Android:backgroundDimEnabled">true</item>
        <item name="Android:background">@Android:color/transparent</item>
5
AndyFaizan

私の場合、color.xml変数で定義するだけです

ライトスタイルの場合:<color name="accent_material_light">#000000</color>

暗いスタイルの場合:<color name="accent_material_dark">#000000</color>

これらの変更はシステム全体に影響します

0
user1513535