Android 自定义屏幕尺寸与对话框

Android 自定义屏幕尺寸与对话框,android,dialog,Android,Dialog,在Android中,当你弹出一个对话框时,它后面的屏幕会变暗。有没有办法控制它的样子?例如,使其或多或少变暗或使用某种图案?是的。你可以控制它 创建对话框后: WindowManager.LayoutParams lp = dialog.getWindow().getAttributes(); lp.dimAmount = 0.0f; // Dim level. 0.0 - no dim, 1.0 - completely opaque dialog.getWindow().setAttri

在Android中,当你弹出一个对话框时,它后面的屏幕会变暗。有没有办法控制它的样子?例如,使其或多或少变暗或使用某种图案?

是的。你可以控制它

创建对话框后:

WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();  
lp.dimAmount = 0.0f; // Dim level. 0.0 - no dim, 1.0 - completely opaque
dialog.getWindow().setAttributes(lp);
Upd:您甚至可以在对话框后面添加模糊:

dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
Upd2

此常量在API级别14中被弃用。
不再支持模糊


这个解决方案对我不起作用。还有另一个选项,您可以取消控制变暗的标志。这个代码对我有用:

dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
或者你可以:

dialog.getWindow().setDimAmount(0.5f);

以下参数在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;
可以将参数指定给对话框

dialog.getWindow().addContentView(view, params)

回答得很晚,但我相信随着时间的推移,事情会变得不受欢迎,所以我的回答肯定会对某些人有所帮助。 首先,创建一个对话框:

dialog = new Dialog(ActivityName.this);
dialog .setCancelable(false);
dialog .setContentView(R.layout.dialog_layout);
然后获取该对话框的窗口,并在后面添加一个名为flag_DIM_的标志,最后在屏幕上设置暗量

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();

精彩的!我明天就试试!模糊是deprecated@Mars对。谢谢,将其添加到answerIt对我的活动没有任何影响,我不明白在设置dimAmount之前为什么要设置dialog contentView,否则就没有了effect@jjyao谢谢…您救了我。此调用至少需要API级别14。dim的颜色如何?