Android--自定义弹出框-自定义dialog

来源:互联网 发布:mmd h动作数据 编辑:程序博客网 时间:2024/05/22 05:17

1、先看布局文件

复制代码
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:padding="20dp"    android:orientation="vertical">    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:gravity="center_horizontal"        android:background="@drawable/custom_dialog_background"        android:orientation="vertical">        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:gravity="center_horizontal"            android:orientation="vertical">            <TextView                android:id="@+id/tv_title_custom_dialog"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_marginTop="20dp"                android:text="提醒"                android:textColor="#000"                android:textSize="18dp" />            <TextView                android:id="@+id/tv_message_custom_dialog"                android:layout_width="wrap_content"                android:layout_height="wrap_content"                android:layout_marginTop="10dp"                android:text="您确定要取消订单吗" />        </LinearLayout>        <View            android:layout_width="match_parent"            android:layout_height="0.5dp"            android:layout_marginTop="20dp"            android:background="#dfdfdf" />        <LinearLayout            android:layout_width="match_parent"            android:layout_height="wrap_content"            android:orientation="horizontal">            <Button                android:id="@+id/btn_negative_custom_dialog"                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:background="@android:color/transparent"                android:text="取消"                android:textColor="@android:color/holo_blue_dark" />            <View                android:layout_width="0.5dp"                android:layout_height="match_parent"                android:background="#dfdfdf" />            <Button                android:id="@+id/btn_positive_custom_dialog"                android:layout_width="0dp"                android:layout_height="wrap_content"                android:layout_weight="1"                android:background="@android:color/transparent"                android:text="确定"                android:textColor="@android:color/holo_blue_dark" />        </LinearLayout>    </LinearLayout></LinearLayout>
复制代码

2、集成dialog重写了一下

复制代码
package newair.com.storelibrary.ui.custom.widget;import android.app.Dialog;import android.content.Context;import android.content.DialogInterface;import android.graphics.Color;import android.graphics.drawable.ColorDrawable;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.Window;import android.view.WindowManager;import android.widget.Button;import android.widget.FrameLayout;import android.widget.LinearLayout;import android.widget.TextView;import newair.com.storelibrary.R;/** * Created by ouhimehime on 16/4/22. * ---------自定义提示框----------- */public class CustomDialog extends Dialog {    public CustomDialog(Context context) {        super(context);    }    public CustomDialog(Context context, int themeResId) {        super(context, themeResId);    }    protected CustomDialog(Context context, boolean cancelable, OnCancelListener cancelListener) {        super(context, cancelable, cancelListener);    }    public static class Builder {        private Context context;        private String title;  //标题        private String message;//提示消息        private String negative_text;//消极的        private String positive_text;//积极的        private DialogInterface.OnClickListener negativeListener;//消极的监听        private DialogInterface.OnClickListener positiveListener;//积极的监听        public Builder(Context context) {            this.context = context;        }        public Builder setTitle(String title) {            if (title == null) {                this.title = "提醒";            }            this.title = title;            return this;        }        public Builder setMessage(String message) {            if (message == null) {                this.message = "您没有填写提示信息哦";            }            this.message = message;            return this;        }        public Builder setNegativeButton(String negative_text, DialogInterface.OnClickListener negativeListener) {            if (negative_text == null) {                this.negative_text = "取消";            }            this.negative_text = negative_text;            this.negativeListener = negativeListener;            return this;        }        public Builder setPositionButton(String positive_text, DialogInterface.OnClickListener positiveListener) {            if (positive_text == null) {                this.positive_text = "确定";            }            this.positive_text = positive_text;            this.positiveListener = positiveListener;            return this;        }        private TextView tv_title_custom_dialog;  //标题        private TextView tv_message_custom_dialog;//提示信息        private Button btn_negative_custom_dialog;//消极        private Button btn_positive_custom_dialog;//积极        public CustomDialog create() {            final CustomDialog dialog = new CustomDialog(context);            View view = LayoutInflater.from(context).inflate(R.layout.dialog_custom_style_layout, null);            dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);//加上这一句,取消原来的标题栏,没加这句之前,发现在三星的手机上会有一条蓝色的线//            dialog.addContentView(view, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));            dialog.setContentView(view, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));            tv_title_custom_dialog = (TextView) view.findViewById(R.id.tv_title_custom_dialog);            tv_message_custom_dialog = (TextView) view.findViewById(R.id.tv_message_custom_dialog);            btn_negative_custom_dialog = (Button) view.findViewById(R.id.btn_negative_custom_dialog);            btn_positive_custom_dialog = (Button) view.findViewById(R.id.btn_positive_custom_dialog);            tv_title_custom_dialog.setText(title);            tv_message_custom_dialog.setText(message);            btn_negative_custom_dialog.setText(negative_text);            btn_positive_custom_dialog.setText(positive_text);            dialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));            btn_negative_custom_dialog.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    negativeListener.onClick(dialog, Dialog.BUTTON_NEGATIVE);                }            });            btn_positive_custom_dialog.setOnClickListener(new View.OnClickListener() {                @Override                public void onClick(View v) {                    positiveListener.onClick(dialog, Dialog.BUTTON_POSITIVE);                }            });            return dialog;        }    }}
复制代码

3、使用起来和系统的用法一样

复制代码
CustomDialog.Builder builder = new CustomDialog.Builder(this);                builder.setTitle("购物提醒")                        .setMessage("我是提示信息,大家好好")                        .setNegativeButton("再看看", new DialogInterface.OnClickListener() {                            @Override                            public void onClick(DialogInterface dialog, int which) {                                dialog.dismiss();                                Toast.makeText(GoodsListActivity.this, "点击了取消按钮", Toast.LENGTH_SHORT).show();                            }                        })                        .setPositionButton("确定", new DialogInterface.OnClickListener() {                            @Override                            public void onClick(DialogInterface dialog, int which) {                                dialog.dismiss();                                Toast.makeText(GoodsListActivity.this, "点击了确定按钮", Toast.LENGTH_SHORT).show();                            }                        })                        .create()                        .show();
0 0