本人最近在做一款APP,根据客户需求需要自定义的Dialog需要全屏显示并实现覆盖状态栏。由于安卓在开发的过程中需要适配多款机型多款系统,本人开发中使用的测试手机系统为Android 5.0,Android 6.0 ,Android 9.0,测试的手机品牌有OPPO、华为、小米及模拟器。在此基础上的设备,自定义Dialog均实现客户的需求。但是当APK文件提交到客户手里,经过客户测试,发现在部分手机上会出现dialog不能遮盖状态栏。效果如下图一: 红圈中表示dialog没有隐藏状态栏,所看到的是下层activity界面是隐藏了状态栏。部分手机上就不会出现图一效果,而实现的效果如下图二。
 

红圈中部分是activity界面是隐藏了状态栏
图一
图二

 

 当在开发的过程发现,有些问题在个别手机上出现差异的现象,即使你已经根据系统做了适配,同时找了很多资料你会发现还是无法解决的时候,是不是很绝望!!

我在处理这个问题上,基本思路是先确认出问题的手机系统、手机品牌及手机型号等,尽可能的找到同款类型的手机,即使不是同款,起码是系统都是一个版本也好啊。但是事实并不是我想的这样,因为我最终发现出现改问题只是个别手机出现,即使我坐了适配系统,也是无济于事!通过百度查询,看了一些博客,尝试的按照播放的解决方案去处理依旧是无法解决问题。

就拿目前这个问题说,我找的解决办法有:https://www.jb51.net/article/164465.htmhttps://www.jianshu.com/p/20b1c14e048fhttps://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);到此问题解决。

 

 

 

 

 

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐