实例化带有主题的对话框出现重叠现象的解决方案

今天再写一个很简单的弹出对话框时,遇到了一个迷之bug:

重叠的对话框

我在代码中实例化了一个对话框:

final DatePickerDialog dialog = new DatePickerDialog(context, theme, listener, int year, int month, int dayOfMonth);

这是Dialog的构造方法之一,其中的theme是对话框的主题,这里我选用的是
theme = android.R.style.Theme_Holo_Light_Dialog;
但是显示出的结果缺很奇怪,看着像两个对话框重叠在了一起。

在网上找了一圈,发现也有人遇到过这个问题,不过并没有给出解决方案。

其实这个bug很好解决。位于底部的白色框只是你实例化的对话框的一个background,并非两个对话框重叠了。除了少数几个theme,大部分dialog的主题都不是全屏的,因此dialog的背景也不会全屏显示。

那我们只需要自己新建一个style,将背景设为透明,问题便迎刃而解。

    <style name="MonthChooseDialog" parent="@android:style/Theme.Holo.Light.Dialog">
        <item name="android:windowBackground">@android:color/transparent</item>
    </style>

最后在构造方法中传入我们自定义的style
theme = R.style.MonthChooseDialog;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容