说实话,dialogfragment 其实没有什么讲的,使用方式都差不多,主题设置和activity差不多。主要有几个属性。
是否全屏。
全屏后背景是否变暗。
是否保留标题栏。
是否保留边框。
<!--自定义dialog背景全透明无边框theme -->
<style name="Dialog_Msg" parent="android:style/Theme.Dialog">
<!--背景颜色及和透明程度-->
<item name="android:windowBackground">@android:color/transparent</item>
<!--是否去除标题 -->
<item name="android:windowNoTitle">true</item>
<!--是否去除边框-->
<item name="android:windowFrame">@null</item>
<!--是否浮现在activity之上-->
<item name="android:windowIsFloating">true</item>
<!--是否模糊-->
<item name="android:backgroundDimEnabled">false</item>
</style>
android:backgroundDimEnabled 这个属性设置true后,背景就全透明了。
大概这么设置:
然后,重点来了,状态栏 可能和你需要的不一样。这个和主题有关,dialogfragment 可以看做fragment,那么 activity 的主题是可以用在这个上面的。
如果你的dialogfragment 需要和activity的主题一样,只需要 parent 你应用的主题就好了。
还有一个,当我的dialogfragment 的主题parent为Theme.AppCompat.Dialog 的时候,我显示出来的dialog的状态栏为纯黑色。设置为android:style/Theme.Dialog 状态栏为黑底白字。
因为我的主题的白底黑字和dialogfragment 的显示需求一样,我就直接 parent的是activity的主题。
个人理解,状态栏变黑是因为主题设置中没有设置状态栏字体颜色和底色吧。
如果有错误欢迎指正,谢谢了。