如果只想修改原生Dialog的部分属性,那自定义Dialog就有点费事了。但是像修改透明度之类的属性时,百度一波后我发现大家都这样写,
WindowManager.LayoutParams lp=dialog.getWindow().getAttributes();
lp.alpha=1.0f;
dialog.getWindow().setAttributes(lp);
但是这样写有一个问题,我会发现getWindow的方法调用不了,这个原因和Builder有关,结合Android浅谈Builder模式 - 简书,下面放上可以用的代码:
```
AlertDialog dialog=new AlertDialog.Builder(getContext(),AlertDialog.THEME_HOLO_DARK).create();
//修改透明度
WindowManager.LayoutParams lp=dialog.getWindow().getAttributes();
lp.alpha=0.7f;
dialog.getWindow().setAttributes(lp);
dialog.setIcon(R.drawable.icon_1);
dialog.setTitle("小车账户充值");
dialog.setMessage("在"+LoadingDialog.getTime()+" 将要给一号小车充值44元");
dialog.setButton(DialogInterface.BUTTON1, "确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
dialog.setButton(DialogInterface.BUTTON2, "忽略", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
dialog.setButton(DialogInterface.BUTTON3, "取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
dialog.show();
```
最后放下效果图
网友评论