標籤:lock 修改 water tca text 電源 解決 tco 提示框
近日,遇到一個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半透明背景消失