有两种方法:都是使用Style指定相关的属性
1.在style中显示的设置
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <style name="DialogStyle" parent="@android:style/Theme.Dialog">
- <item name="android:windowBackground"> @android:color/transparent </item>
- <item name="android:backgroundDimEnabled">false</item> </style>
- </resources>
在Activity中覆写onCreateDialog()方法
- protected Dialog onCreateDialog(int id) {
- // TODO Auto-generated method stub
- if(id == 1){
- Dialog dialog = new Dialog(this, R.style.DialogStyle);
- dialog.setContentView(R.layout.start_dialog);
- dialog.show();
- isDialogShow = true;
- return dialog;
- }
- return super.onCreateDialog(id);
- }
2.在代码中使用语句设定
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <style name="DialogStyle" parent="@android:style/Theme.Dialog">
- <item name="android:windowBackground"> @android:color/transparent </item>
- </style>
- </resources
java代码
- @Override
- protected Dialog onCreateDialog(int id) {
- // TODO Auto-generated method stub
- if(id == 1){
- Dialog dialog = new Dialog(this, R.style.DialogStyle);
- dialog.setContentView(R.layout.start_dialog);
- Window window = dialog.getWindow();
- WindowManager.LayoutParams params = window.getAttributes();
- params.dimAmount = 0f;
- window.setAttributes(params);
- dialog.show();
- isDialogShow = true;
- return dialog;
- }
- return super.onCreateDialog(id);
- }
两种方法其实一样,最后效果就是弹出对话框时背景不会变暗了。
3,在系统层改,让整个系统的dialog弹出时背景都不变暗
方法,在Z:\myandroid\frameworks\base\core\res\res\values\themes.xml里面所有关于dialog的主题,比如 <style name="Theme.Holo.Dialog">里面都添加
- <item name="android:windowBackground"> @android:color/transparent </item>
- <item name="android:backgroundDimEnabled">false</item> </style>
这2个属性,当然android:windowBackground 可以是任何颜色,white black都可以,根据自己需要修改即可
dialog定位显示方法:
Dialog dialog =
new
Dialog(
this
);
dialog.setContentView(R.layout.dialog_layout);
dialog.setTitle(
"Custom Dialog"
);
//获得当前窗体
Window window = dialog.getWindow();
//重新设置
WindowManager.LayoutParams lp = dialogWindow.getAttributes();
window .setGravity(Gravity.LEFT | Gravity.TOP);
lp.x =
100
;
// 新位置X坐标
lp.y =
100
;
// 新位置Y坐标
lp.width =
300
;
// 宽度
lp.height =
300
;
// 高度
lp.alpha =
0
.7f;
// 透明度
// dialog.onWindowAttributesChanged(lp);
//(当Window的Attributes改变时系统会调用此函数)
window .setAttributes(lp);
dialog.show();