今天有个需求是把弹出AlertDialog时的变暗的背景调整得不要那么暗。

  一开始懒惰就直接百度中文搜索,结果找到的代码试了几次都不行。

  后来老老实实开google、stackoverflow搜索,搜出页面:StackOverflow问答页面,然后再去看了看谷歌文档:dimAmount变量说明,才把效果实现了。

  直接展示使用代码,直观有效率:

  

 //创建一个AlertDialog
AlertDialog alertDialog = new AlertDialog.Builder(context).setView(dialogView).create();
//展示AlertDialog
alertDialog.show();
//调整明暗度的代码一定要在show()之后执行
//获取一个LayoutParams对象用于后面设置回去
WindowManager.LayoutParams lp = alertDialog.getWindow().getAttributes();
//调整明暗度,float值,完全透明不变暗是0.0f,完全变暗不透明是1.0f
lp.dimAmount=0.0f;
//必须要设置回去
alertDialog.getWindow().setAttributes(lp);
//根据谷歌文档,给对应的Window添加FLAG_DIM_BEHIND标志位,dimAmount值才有效。
alertDialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);

  dimAmount设为0.0f的效果:

  AlertDialog弹出时背景明暗程度调整-LMLPHP

  dimAmount设为1.0f的效果:

  AlertDialog弹出时背景明暗程度调整-LMLPHP

05-08 08:11