之前做自定义对话框需要宽度铺满全屏时,基本是这样操作的.
创新互联建站服务项目包括鸠江网站建设、鸠江网站制作、鸠江网页制作以及鸠江网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,鸠江网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到鸠江省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
AlertDialog dialog = new AlertDialog.Builder(context).create(); dialog.show(); Window window = dialog.getWindow(); WindowManager.LayoutParams lp = window.getAttributes(); lp.width = WindowManager.LayoutParams.MATCH_PARENT; window.setAttributes(lp); window.setWindowAnimations(R.style.dialogWindowAnim);//动画 window.setContentView(R.layout.layout_mine_bank_del);//布局 window.setGravity(Gravity.CENTER);
以前一直没出过问题,一直到这次使用了
"AppTheme.NoActionBar"
主题,在5.0以上手机发现宽度无法铺满了;如果将位置设置底部
window.setGravity(Gravity.BOTTOM);
会出现底部也有一段距离.
很郁闷,试了其他方式:
window.getDecorView().setPadding(0, 0, 0, 0);
或者
window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
或者
Window window = getWindow(); WindowManager.LayoutParams wlp = window.getAttributes(); Display d = window.getWindowManager().getDefaultDisplay();//获取屏幕宽 wlp.width = (int) (d.getWidth());//宽度按屏幕大小的百分比设置 ;d.getWidth()这个方法已废弃 wlp.gravity = Gravity.CENTER; window.setAttributes(wlp);
但是都一直无法成功.直到今天无意中在一个博客看到这句才解决问题
window.setBackgroundDrawableResource(android.R.color.transparent);
把这句加上去就没问题了,哈哈!
感谢博主 http://blog.csdn.net/bear_huangzhen/article/details/51683758
顺便记一下,刚才那样自定义对话框需要先
dialog.show();
才行,不然会出错的.另一种通过继承去自定义的则是最后面才show
public class MyDialog extends AlertDialog{ public MyDialog(Context context) { super(context); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(R.layout.my_dialog); } }
这种使用也比较简单,灵活度也好
final MyDialog myDialog = new MyDialog(context); myDialog.setMsg("测试显示自定义对话框"); myDialog.setOnPositiveListener("知道了",new View.OnClickListener() { @Override public void onClick(View v) { myDialog.cancel(); } }); myDialog.show();