在手机应用中,对话框(dialog)到处可见,尤其是在一些需要做设置和修改信息时,会有一个对话框作为提醒,让用户确认确实需要这样做,android系统也提供了默认的dialog样式,但是系统提供的样式并不能满足所有的样式需求,而且系统提供的样式不美观,大部分的对话框需要android开发人员自己设计dialog的样式以满足需求。
大部分自定义对话框样式的方式都是在dialog对象上设置显示的内容view来达到类似效果。在以前的版本中确实比较简单,构建dialog对象,初始view对象,调用dialog.show()方法,在调用dialog.setContent(View view);这个方法即可,但是现在在使用这个方式的时候发现和我们预期的结果不一样,对话框有一个背景,或者对话框无法实现全屏。这是在新版sdk中对dialog做了更新,现在想要实现全屏(不会覆盖到状态栏),需要配置dialog的窗口对象的参数;
WindowManager.LayoutParams layoutParams;
layoutParams = dialog.getWindow().getAttributes();
dialog.setContentView(view,layoutParams);
通过配置layoutParams 这个对象就可以实现dialog的全屏的操作。那么要是对话框内容适配自己写的view的效果是不是也是这样的呢?起初我也是这么认为的,但是展现的效果发现自己的样式背后多了一个白色的背景,这个白色背景是dialog这个窗口的根布局的背景,如果只需要把这个根目录的背景设置成全透明就可以了
dialog.getWindow().getDecorView().setBackgroundColor(Color.parseColor("#00ffffff")); params = dialog.getWindow().getAttributes(); params.width = WindowManager.LayoutParams.WRAP_CONTENT; params.height=WindowManager.LayoutParams.WRAP_CONTENT; dialog.getWindow().setAttributes(params);
这样就可以和预期的结果一样的,不会再出现背景的情况。