一、说明
笔记主要是记录一些本人在开发当中的学习和使用笔记。笔记内容包含一些本人觉得重要的知识点、本人易犯的错误等。
由于本人水平有限,其中出现的错误或者不合理的地方望各位读者多多包含,并指出其中不合理和错误的地方,以便我来修改正。谢谢!
二、笔记时间
2019年10月23日
三、简述
本文主要记录如何把Dialog的默认padding设置为0。
四、详情
最近在实际开发当中,我发现Dialog默认会议留有一小部分padding,反馈出来比较直观的现象就是,当我们设置了dialog.setCanceledOnTouchOutside(true)时,发现点击dialog附件一小部分区域是不能自动dismiss的。图解如下:
默认padding
图中红框选中的区域就是默认的padding区域,点击这一部分区域,就算把setCanceledOnTouchOutside设置为true了,dialog也也不会主动dismiss。
那么该问题如何解决勒?其实也很简单,只需要增加以下代码就可以:
dialog.getWindow().getDecorView().setPadding(0, 0, 0, 0);
但是,注意但是来了,说明这里面还有坑。我的坑是什么勒?我设置以上代码后,却发现我给二维码设定的15px的padding没效果了。
这个问题让我苦恼了好一会,最后发现设置以上代码后,Dialog会吃掉一部分padding,至于吃掉的这一部分具体有多大,有说是27px的,也有说是16dp的,具体我就没深究源码了。
本文只给出解决方案,就是设置padding的时候,把吃掉的这部分padding加进去。比如,我要的效果是13px,那么我实际就要设置13+27=42px。由于太简单,具体代码我就不贴了。









网友评论