1.自定义Dialog类
import android.app.Dialog; import android.content.Context; import android.view.Gravity; import android.view.View; import android.view.Window; import android.view.WindowManager; /** * Created by yechaoa on 2016/10/22. */ public class MyDialog extends Dialog { private Window window = null; public MyDialog(Context context, boolean cancelable, OnCancelListener cancelListener) { super(context, cancelable, cancelListener); } public MyDialog(Context context, int theme) { super(context, theme); } public MyDialog(Context context) { super(context); } public void setView(View view) { setContentView(view); } public void setView(int id) { setContentView(id); } public void setProperty(int x, int y, int w, int h) { window = getWindow();//得到对话框的窗口. WindowManager.LayoutParams wl = window.getAttributes(); wl.x = x;//设置对话框的位置.0为中间 wl.y = y; wl.width = w; wl.height = h; wl.alpha = 1f;// 设置对话框的透明度,1f不透明 wl.gravity = Gravity.CENTER;//设置显示在中间 window.setAttributes(wl); } }
2.给dialog一个style
<style name="myDialog" parent="@android:style/Theme.Dialog"> <!--dialog的背景,此处是一个圆角白底的xml文件,也可以是.9图--> <item name="android:windowBackground">@drawable/corners_bg_normal</item> <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item> <item name="android:windowFrame">@null</item><!--边框--> <item name="android:windowIsFloating">true</item><!--是否浮现在activity之上--> <item name="android:windowIsTranslucent">true</item><!--半透明--> <item name="android:windowNoTitle">true</item><!--无标题--> <item name="android:backgroundDimEnabled">true</item><!--模糊--> </style>
3.圆角白底xml文件
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <corners android:radius="10dp"/><!--圆角大小--> <solid android:color="@color/white"/> <stroke android:color="#cbcbcb" android:width="1px"/> </shape>
4.dialog的使用
final MyDialog dialog=new MyDialog(MainActivity.this, R.style.myDialog); final View view = View.inflate(ManifestEditActivity.this, R.layout.dialog_submit,null); dialog.setView(view); dialog.setProperty(0,0, 600, 400);//设置坐标和宽高 dialog.setCanceledOnTouchOutside(true); dialog.show(); Button dialogCancel= (Button) view.findViewById(R.id.dialog_cancel); dialogCancel.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { dialog.dismiss(); } }); Button dialogConfirm= (Button) view.findViewById(R.id.dialog_confirm); dialogConfirm.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //doSomething } });