在Android中,当您弹出一个对话框时,它背后的屏幕会变暗。有没有办法控制看起来像什么?例如,让它或多或少变暗或使用某种模式?
答案 0 :(得分:39)
是的,确实如此。你可以控制它。
创建对话框后:
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
lp.dimAmount=0.0f; // Dim level. 0.0 - no dim, 1.0 - completely opaque
dialog.getWindow().setAttributes(lp);
更新:您甚至可以在对话框后添加模糊:
dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
Blurring is deprecated since API14:
此常量在API级别14中已弃用。
不再支持模糊。
答案 1 :(得分:25)
或者你可以这样做:
dialog.getWindow().setDimAmount(0.5f);
答案 2 :(得分:15)
此解决方案对我不起作用。还有另一种选择,您可以取消控制调光的标志。这段代码对我有用:
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
答案 3 :(得分:8)
很晚才回答,但我确信事情会随着时间的推移而被弃用,所以我的回答肯定会对某些人有所帮助。 首先创建一个对话框:
dialog = new Dialog(ActivityName.this);
dialog .setCancelable(false);
dialog .setContentView(R.layout.dialog_layout);
然后获取该对话框的窗口并添加一个名为FLAG_DIM_BEHIND的标志,最后在屏幕上设置暗淡的数量。
Window window = dialog.getWindow();
if(window != null){
window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); // This flag is required to set otherwise the setDimAmount method will not show any effect
window.setDimAmount(0.5f); //0 for no dim to 1 for full dim
}
然后显示你的对话框,
dialog.show();
在您关闭对话框之前,请清除标记:
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
然后解雇:
dialog.dismiss();
答案 4 :(得分:1)
以下参数适用于Android 5.1
WindowManager.LayoutParams params = new WindowManager.LayoutParams( WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.WRAP_CONTENT,
WindowManager.LayoutParams.TYPE_PHONE,
WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE | WindowManager.LayoutParams.FLAG_DIM_BEHIND,
PixelFormat.TRANSLUCENT);
params.dimAmount = 0.65f;
params可以分配给对话框。
dialog.getWindow().addContentView(view, params)