删除自定义对话框上的黑色背景
我想删除自定义对话框上的黑色背景,如图所示。我确信黑色背景来自对话框,而不是来自应用程序的背景。
;
AlertDialog代码
public class MyAlertDialog extends AlertDialog {
public MyAlertDialog(Context context)
{
super(context);
}
public MyAlertDialog(Context context, int theme)
{ super(context, theme); }
}
活动代码
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();
}
样式
<?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>
图片资源
popup_center_dark.9.png
popup_bottom_medium.9.png
popup_top_dark.9.png
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(15)
这对我有用。在
bottomSheetDialogFragment
This works for me.in
bottomSheetDialogFragment
Sonehow
getWindow().setBackgroundDrawable()
不适用于我的AlertDialog
。我使用Dialog找到了一个更简单的解决方案。这是我的代码 -Sonehow
getWindow().setBackgroundDrawable()
didn't work for me withAlertDialog
. I found an easier solution using Dialog. Here's my code -试试这个:
Try this:
在尝试了针对此问题的数十种其他解决方案之后,最终对我有用的是:
然后设置我的对话框以使用此主题。
After trying dozens of other solutions for this problem, what ended up working for me is:
And then setting my dialog to use this theme.
去除背景不透明颜色,只需设置 DimAmount
Remove the background opacity color, you just need to set the DimAmount
使用下面两行代码。
也经过测试。
getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
Use below two code lines.
Tested as well.
getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
以下方法对我有用:
Following method worked for me:
// style.xml 中的代码样式:
// 在 Activity 中:将样式设置为对话框:
//code style in style.xml :
// in activity :set style to dialog :
只需更改 Dialog 的父级即可。
有黑色背景
无黑色背景
Just change Dialog parent them.
With black backround
Without black background
您可以创建如下所示的 xml 布局,并在对话框(dialog.xml)上设置该布局:
这里是在警报对话框上设置布局的代码:
you can create xml layout like following and set that layout on dialog(dialog.xml) :
here is the code to set layout on alert dialog :
在 KOTLIN 中将此应用于警报对话框对象
In KOTLIN apply this on alert dialog object
要去除背景色,在布局时,只需将背景设置为@null
To remove the background color, on layout, you just need to set the background to @null
我的基于 Alertdialog.Builder 的自定义对话框也遇到了同样的问题,当我使用时,它的标题和正文中显示了黑色背景:
解决方案是
1-使用预定义警报对话框构建器的主题之一:
THEME_DEVICE_DEFAULT_LIGHT最适合我
2-将默认对话框按钮(正/负)颜色设置为您想要的任何颜色,如下所示:
检查以下博客发帖给主题选项的更多细节和技巧:
http://blog.supenta .com/2014/07/02/how-to-style-alertdialogs-like-a-pro/
在 Oreo 8.1 上测试
I had the same problem with my custom dialog based on the Alertdialog.Builder, which had a black background showing in the title and the body when i use:
solution was
1- Use one of the pre-defines alert dialog builder's themes:
THEME_DEVICE_DEFAULT_LIGHT worked best for me
2 - set the default dialog button (positive / negative) colors to which ever color you desire like so:
check the below blog post for more detail and tricks to theming options:
http://blog.supenta.com/2014/07/02/how-to-style-alertdialogs-like-a-pro/
tested on Oreo 8.1