安卓开发部分手机自定义dialog不能遮盖状态栏
本人最近在做一款APP,根据客户需求需要自定义的Dialog需要全屏显示并实现覆盖状态栏。由于安卓在开发的过程中需要适配多款机型多款系统,本人开发中使用的测试手机系统为Android 5.0,Android 6.0 ,Android 9.0,测试的手机品牌有OPPO、华为、小米及模拟器。在此基础上的设备,自定义Dialog均实现客户的需求。但是当APK文件提交到客户手里,经过客户测试,发现在部分手
本人最近在做一款APP,根据客户需求需要自定义的Dialog需要全屏显示并实现覆盖状态栏。由于安卓在开发的过程中需要适配多款机型多款系统,本人开发中使用的测试手机系统为Android 5.0,Android 6.0 ,Android 9.0,测试的手机品牌有OPPO、华为、小米及模拟器。在此基础上的设备,自定义Dialog均实现客户的需求。但是当APK文件提交到客户手里,经过客户测试,发现在部分手机上会出现dialog不能遮盖状态栏。效果如下图一: 红圈中表示dialog没有隐藏状态栏,所看到的是下层activity界面是隐藏了状态栏。部分手机上就不会出现图一效果,而实现的效果如下图二。
当在开发的过程发现,有些问题在个别手机上出现差异的现象,即使你已经根据系统做了适配,同时找了很多资料你会发现还是无法解决的时候,是不是很绝望!!
我在处理这个问题上,基本思路是先确认出问题的手机系统、手机品牌及手机型号等,尽可能的找到同款类型的手机,即使不是同款,起码是系统都是一个版本也好啊。但是事实并不是我想的这样,因为我最终发现出现改问题只是个别手机出现,即使我坐了适配系统,也是无济于事!通过百度查询,看了一些博客,尝试的按照播放的解决方案去处理依旧是无法解决问题。
就拿目前这个问题说,我找的解决办法有:https://www.jb51.net/article/164465.htm,https://www.jianshu.com/p/20b1c14e048f,https://blog.csdn.net/weixin_30878361/article/details/95370589
这些解决办法,并没有实质作用。很是绝望!最后我自己想到的解决办法是,给dialog添加一个Style,在Style里面配置项对应的属性如:
<style name="ParentsModedialogStyle" parent="@android:style/Theme.Dialog">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowFrame">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowIsTranslucent">false</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
在代码的引用:super(context, R.style.kdialog);到此问题解决。
更多推荐
所有评论(0)