在自定义对话框上删除黑色背景

pen*_*ang 38 android android-alertdialog android-dialog android-styles

我想删除自定义对话框上的黑色背景,如图所示.我确定黑色背景来自对话框,而不是应用程序的背景.

自定义对话框周围有黑色背景 ;

AlertDialog代码

public class MyAlertDialog extends AlertDialog { 
    public MyAlertDialog(Context context) 
    {  
        super(context); 
    }  

    public MyAlertDialog(Context context, int theme) 
    { super(context, theme); }
}
Run Code Online (Sandbox Code Playgroud)

活动代码

public void showMyDialogOK(Context context, String s, DialogInterface.OnClickListener OkListener) {        
    MyAlertDialog myDialog = new MyAlertDialog(context, R.style.MyDialog2);        
    myDialog.setTitle(null); 
    myDialog.setMessage(s);        
    myDialog.setButton(DialogInterface.BUTTON_POSITIVE ,"Ok", OkListener);
    myDialog.show();    
}
Run Code Online (Sandbox Code Playgroud)

样式

<?xml version="1.0" encoding="utf-8"?>
    <resources>
        <style name="MyTheme" parent="@android:style/Theme.NoTitleBar.Fullscreen">
            <item name="android:alertDialogStyle">@style/AlertDialog</item>  
        </style>    

        <style name="MyTheme2" parent="@android:style/Theme.Black">
            <item name="android:alertDialogStyle">@style/AlertDialog</item>    
        </style> 

        <style name="AlertDialog">        
            <item name="android:fullDark">@null</item>
            <item name="android:fullBright">@null</item>
            <item name="android:topDark">@drawable/popup_top_dark</item>
            <item name="android:topBright">@null</item>
            <item name="android:centerBright">@null</item>
            <item name="android:centerDark">@drawable/popup_center_dark</item>
            <item name="android:centerMedium">@null</item>
            <item name="android:bottomDark">@null</item>
            <item name="android:bottomBright">@null</item>
            <item name="android:bottomMedium">@drawable/popup_bottom_medium</item>
        </style>

        <style name="MyDialog2" parent="@android:Theme.Dialog">        
            <item name="android:windowBackground">@null</item>    
            <item name="android:buttonStyle">@style/CustomButton</item>  
        </style>    

        <style name="CustomButton" parent="@android:style/Widget.Button">        
            <item name="android:background">@drawable/button_stateful</item>  
        </style>
</resources>
Run Code Online (Sandbox Code Playgroud)

图像资源

popup_center_dark.9.png

popup_center_dark.9.png

popup_bottom_medium.9.png

popup_bottom_medium.9.png

popup_top_dark.9.png

popup_top_dark.9.png

dir*_*ira 89

public MyAlertDialog(
        Context context, 
        int theme
    ) extends AlertDialog { 

    super(context, theme);
    getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
}
Run Code Online (Sandbox Code Playgroud)

  • 更简单:````getWindow().setBackgroundDrawableResource(android.R.color.transparent);```` (18认同)

Kho*_*aib 19

Sonehow getWindow().setBackgroundDrawable()对我不起作用AlertDialog.我发现使用Dialog更简单的解决方案.这是我的代码 -

        final Dialog dialog = new Dialog(this);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
        dialog.setContentView(R.layout.popup_window);
        dialog.show();
Run Code Online (Sandbox Code Playgroud)


Cha*_*aru 16

试试这个:

myDialog.getWindow().clearFlags(LayoutParams.FLAG_DIM_BEHIND);
Run Code Online (Sandbox Code Playgroud)


Ans*_*ren 7

在为这个问题尝试了几十种其他解决方案之后,最终为我工作的是:

<style name="translucentDialog" parent="android:Theme.Holo.Dialog">
    <item name="android:windowBackground">@android:color/transparent</item>
</style>
Run Code Online (Sandbox Code Playgroud)

然后设置我的对话框以使用此主题.


Nav*_*dav 5

使用下面两行代码。也经过测试。

getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);


dro*_*.me 5

去除背景不透明颜色,你只需要设置DimAmount

dialog.getWindow().setDimAmount(float amount);
Run Code Online (Sandbox Code Playgroud)

新的暗淡量,从 0 表示没有暗淡到 1 表示完全暗淡。