关于Dialog的实现方式,Google官方给出了详细的指导,点击这里。截图如下
我的demo使用AlertDialog的自定义布局实现了MaterialDialog,源码点击这里
Dialog背景设置:
问题:我对Dialog设置的背景总是不生效,大概修改了四五次xml样式都不生效。
关键点:然后我怀疑是Dialog的window对象在最底层的样式起作用。
解决:
public class MyDialogextends Dialog{
public MyDialog (Context context) {
super(context,android.R.style. Theme); //在这需要设置个系统的theme替换dialog默认的主题,不设置下面的window设置都无效
setOwnerActivity((Activity)(context));
Window window = getWindow();
requestWindowFeature(Window. FEATURE_NO_TITLE); //去掉dialog的title
window.addFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN); //全屏的flag
window.setBackgroundDrawableResource(android.R.color.transparent); //设置window背景透明
WindowManager.LayoutParams lp = window.getAttributes();
lp.alpha = 1.0f;
lp.dimAmount = 0.0f; //dimAmount在0.0f和1.0f之间,0.0f完全不暗,1.0f全暗
window.setAttributes(lp);
this.setCancelable( false);
}
public void show(FlashAd flashAd){
this.setContentView(flashAd);
this.show();
}
解决链接:
https://my.oschina.net/CFred/blog/402390效果见下图: