欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

程序员文章站 2024-02-29 19:19:40
近日,遇到一个dialog半透明背景消失的问题,背景需求是自定义dialog实现警告提示框: // 初始化警告弹出框 alertdialog = new em...

近日,遇到一个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);

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

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

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

Android开发中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半透明背景消失,希望对大家有所帮助