经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » Android » 查看文章
解决在圆角手机(如小米8)上自定义Dialog无法全屏的问题
来源:cnblogs  作者:whatCode  时间:2019/1/3 9:31:46  对本文有异议

在小米8等一系列圆角的手机上测试项目时,发现我的自定义dialog无法全屏了,这时我的dialog全屏的解决方案还是和网上大部分人是一样的

  1. Window window = getWindow();
  2. if (window == null) return;
  3. window.getDecorView().setPadding(0, 0, 0, 0);
  4. window.setGravity(gravity);
  5. WindowManager.LayoutParams layoutParams = window.getAttributes();
  6. layoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
  7. layoutParams.height = WindowManager.LayoutParams.WRAP_CONTENT;
  8. window.setAttributes(layoutParams);

但是当手机使用了圆角设计时,可能就会为了显示效果而强制使dialog能够完整显示。

常规做法可能是在其周围加上padding。但是通过我的代码可以看到,我已经使这个DecorView的padding为0,显示效果仍不理想。

事实上这时view已经占满全屏,你可明显的发现view下部有下移的痕迹。

因为我还没有来得及深入了解其底层原因,只能按照我自己的猜测去尝试。

经过对我的代码进行分析,我猜测可能是系统强制为dialog设置了setClipBounds,于是我尝试使用了setClipToOutline(false)来取消它的clip,发现它确实是可用的。

于是我得到了一个解决方案,在以上代码中添加

  1. window.getDecorView().setClipToOutline(false);

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号