解決在圓角手機(如小米8)上自定義Dialog無法全屏的問題


在小米8等一系列圓角的手機上測試項目時,發現我的自定義dialog無法全屏了,這時我的dialog全屏的解決方案還是和網上大部分人是一樣的

        Window window = getWindow();
        if (window == null) return;
        window.getDecorView().setPadding(0, 0, 0, 0);
        window.setGravity(gravity);
        WindowManager.LayoutParams layoutParams = window.getAttributes();
        layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
        layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
        window.setAttributes(layoutParams);

但是當手機使用了圓角設計時,可能就會為了顯示效果而強制使dialog能夠完整顯示。

常規做法可能是在其周圍加上padding。但是通過我的代碼可以看到,我已經使這個DecorView的padding為0,顯示效果仍不理想。

事實上這時view已經占滿全屏,你可明顯的發現view下部有下移的痕跡。

因為我還沒有來得及深入了解其底層原因,只能按照我自己的猜測去嘗試。

經過對我的代碼進行分析,我猜測可能是系統強制為dialog設置了setClipBounds,於是我嘗試使用了setClipToOutline(false)來取消它的clip,發現它確實是可用的。

於是我得到了一個解決方案,在以上代碼中添加

window.getDecorView().setClipToOutline(false);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM