关于Android对话框宽度无法铺满全屏的问题
之前做自定义对话框需要宽度铺满全屏时,基本是这样操作的.
AlertDialogdialog=newAlertDialog.Builder(context).create();dialog.show();Windowwindow=dialog.getWindow();WindowManager.LayoutParamslp=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);
或者
Windowwindow=getWindow();WindowManager.LayoutParamswlp=window.getAttributes();Displayd=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
publicclassMyDialogextendsAlertDialog{publicMyDialog(Contextcontext){super(context);}@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);this.setContentView(R.layout.my_dialog);}}
这种使用也比较简单,灵活度也好
finalMyDialogmyDialog=newMyDialog(context);myDialog.setMsg("测试显示自定义对话框");myDialog.setOnPositiveListener("知道了",newView.OnClickListener(){@OverridepublicvoidonClick(Viewv){myDialog.cancel();}});myDialog.show();
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。