安卓開發部分手機自定義dialog不能遮蓋狀態欄

本人最近在做一款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);到此問題解決。

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章