【解决】Android自定义Dialog无法横向填满

来源:互联网 发布:阿里云os电视软件下载 编辑:程序博客网 时间:2024/06/05 02:47

在Android5.0和5.1上自定义Dialog时发现无法横向填满屏幕,就算在自定义xml和动态布局里面设置match_parent或是fill_parent也没有用。问题记录如下:



【原因】

排除当前自定义dialog的属性没有宽度的问题后,想到可能是父类Dialog本身有自定义宽度属性什么的,到源码一看果然如此故记录。

首先查找父类Dialog的style和theme,发现没有设置宽度的相关属性,但发现background背景属性:



到源码目录查找该背景图片,如下:


没错,你没看错,这是一张点9图。不知道.9图的请先移步度娘。

bingo!原因找到:是因为背景的.9图四周 边距太宽的原因,和宽度设置无关。其实是填满了的,只是四周是透明的而已。

【解决】

方法一、自定义style,继承Theme.Dialog,重写背景属性:


然后在布局中添加style或者在代码的构造函数中添加

public HomeLongDialog(Context context) {super(context, R.style.ShortcutDialog);// TODO Auto-generated constructor stubmContext = context;Log.i("TEST", "HomeLongDialog");}


方法二、简便一点,直接在window的属性中设置背景覆盖

window.setBackgroundDrawableResource(android.R.color.white);


0 0