今天再写一个很简单的弹出对话框时,遇到了一个迷之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;