当前位置: 移动技术网 > 移动技术>移动开发>Android > Android开发中Dialog半透明背景消失

Android开发中Dialog半透明背景消失

2019年07月24日  | 移动技术网移动技术  | 我要评论

近日,遇到一个dialog半透明背景消失的问题,背景需求是自定义dialog实现警告提示框:

// 初始化警告弹出框 
alertdialog = new empalertview(context, utils.getidbyname(context, "style", "alert_style")); 
alertdialog.setcanceledontouchoutside(false); 
layoutinflater inflater = (layoutinflater) context.getsystemservice(context.layout_inflater_service); 
layout = inflater.inflate(utils.getidbyname(context, "layout", "alertview"), null); 
layout.setlayoutparams(new layoutparams(layoutparams.match_parent, layoutparams.wrap_content)); 
// 设置半透明背景 
window window = alertdialog.getwindow(); 
windowmanager.layoutparams lp = window.getattributes(); 
lp.alpha = 0.9f; 
window.setattributes(lp); 
alertdialog.setcontentview(layout);

进行页面操作及用户提示,一切显示正常,如图:

当按下屏幕电源按钮,再次点亮屏幕,发现dialog半透明的灰暗背景消失了.....

解决方法:设置window.addflags(windowmanager.layoutparams.flag_show_when_locked);修改后如下:

// 初始化警告弹出框 
alertdialog = new empalertview(context, utils.getidbyname(context, "style", "alert_style")); 
alertdialog.setcanceledontouchoutside(false); 
layoutinflater inflater = (layoutinflater) context.getsystemservice(context.layout_inflater_service); 
layout = inflater.inflate(utils.getidbyname(context, "layout", "alertview"), null); 
layout.setlayoutparams(new layoutparams(layoutparams.match_parent, layoutparams.wrap_content)); 
window window = alertdialog.getwindow(); 
windowmanager.layoutparams lp = window.getattributes(); 
lp.alpha = 0.9f; 
window.setattributes(lp); 
// 防止按下再重新开启屏幕电源,原先变暗的背景变白色 
window.addflags(windowmanager.layoutparams.flag_show_when_locked); 
alertdialog.setcontentview(layout);

以上所述是小编给大家介绍的android开发中dialog半透明背景消失,希望对大家有所帮助

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网