Android Dialog-Dialog无法充满横屏且下方有间隔
自定义一个Dialog,写完布局后运行,发现Dialog无法充满屏幕,就像下边这样:
代码大致如下:
Dialog dialog = new Dialog(this); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.dialog_layout); Window dialogWindow = dialog.getWindow(); dialogWindow.setGravity(Gravity.BOTTOM); dialogWindow.getDecorView().setPadding(0, 0, 0, 0); WindowManager.LayoutParams lp = dialogWindow.getAttributes(); lp.width = WindowManager.LayoutParams.FILL_PARENT; lp.height = WindowManager.LayoutParams.WRAP_CONTENT; dialogWindow.setAttributes(lp); dialog.show();
分析
这个问题其实是因为背景的.9图四周 边距太宽的原因,和宽度设置无关,事实上是填满了的,只是四周是透明的而已。
打开源码中父类Dialog的style和theme,发现background属性:
切换到图片所在目录:
发现它是一张.9图片
解决方法1:
自定义style,继承Theme.Dialog,重写背景属性
<style name="dialog" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">false</item> <item name="android:windowNoTitle">true</item> <item name="android:windowBackground">@android:color/white</item> <item name="android:backgroundDimEnabled">true</item> </style>
然后代码引用该style:
Dialog dialog = new Dialog(this,R.style.dialog);
解决方法2:
在自定义dialog中手动用代码设置
dialogWindow.setBackgroundDrawableResource(android.R.color.white);
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步