BaseDialog

来源:互联网 发布:ubuntu ctrl alt t 编辑:程序博客网 时间:2024/05/22 00:17
/***自定义dialog基类无边框,不标题栏;*/public abstract class BaseDialog extends Dialog {    protected Context mContext;    public BaseDialog(Context context) {        super(context, R.style.ShareDialog);//将下面的主题赋值到自己的项目中        this.mContext = context;    }    @Override    protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);        WindowManager.LayoutParams params = getWindow().getAttributes();        params.height = LayoutParams.MATCH_PARENT;        params.width = LayoutParams.MATCH_PARENT;        params.gravity = Gravity.CENTER;        getWindow().setAttributes(params);        //动画效果可自己定义        getWindow().setWindowAnimations(R.style.ConfirmDialogAnimstyle);        //把整个Layout顶上去露出获得焦点的EditText,不压缩多余空间        getWindow().setSoftInputMode(                WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);        // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {        // // 透明状态栏        // getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);        // // 透明导航栏        // getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);        // }    }    //点击dialog或者以外的地方,dialog消失;    protected void addClickCancel() {        View view = findViewById(R.id.dialog_content);//必须在自定义的最外层布局添加id为dialog_content,否则不响应点击消失事件;        if (view != null) {            view.setOnClickListener(new android.view.View.OnClickListener() {                @Override                public void onClick(View v) {                    dismiss();                }            });        }    }}
 <!-- 对话框样式 背景变暗 -->    <style name="ShareDialog">        <item name="android:windowBackground">@android:color/transparent</item>        <item name="android:windowFrame">@null</item>        <item name="android:windowNoTitle">true</item>        <item name="android:windowIsFloating">false</item>        <item name="android:windowIsTranslucent">true</item>        <item name="android:windowContentOverlay">@null</item>        <item name="android:backgroundDimEnabled">true</item>    </style>

自定义一个dialog继承baseDialog布局自己随便定义什么样的都可以;
例如下面的:

public class DialogMaterialMenu extends BaseDialog {    Context context;    public static TextView waitToApplay;    public static  TextView latestApplay;    public  static TextView sort;    public DialogMaterialMenu(Context context) {        super(context);        this.context=ICMApplication.mContext;    }    @Override    protected void onCreate(Bundle savedInstanceState) {        // TODO Auto-generated method stub        super.onCreate(savedInstanceState);        setContentView(R.layout.dialog_layout_material_dialog);//在这里设置自己需要显示的布局;         //初始化控件        initView();    }    private void initView() {        addClickCancel();//一定要注意此处调一下,让点击屏幕dialog消失        waitToApplay = (TextView) findViewById(R.id.waitToApplay);        latestApplay = (TextView) findViewById(R.id.latestApplay);        sort = (TextView) findViewById(R.id.sort);    }        /**         * 如果有监听事件,注册控件的监听事件,或者设置控件显示的内容;         */}
1 0