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);