您的位置:首页 > 移动开发 > Android开发

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

2015-08-13 09:19 417 查看
在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 stub
mContext = context;
Log.i("TEST", "HomeLongDialog");
}


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

window.setBackgroundDrawableResource(android.R.color.white);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息