美文网首页
自定义Dialog

自定义Dialog

作者: 我家猫猫不睡觉 | 来源:发表于2020-08-13 09:33 被阅读0次

*确认取消弹框

public class SureCancelDialog extends Dialog {

      public SureCancelDialog(@NonNull Context context, int themeResId) {
        super(context, themeResId);
    }
    
    public static class Builder  {
        
        private View mLayout;
        private TextView mTvContent;
        private TextView mTvCancel;
        private TextView mTvPositive;
        private SureCancelDialog mDialog;
        private OnConfirmClickListener mSureClickListener;
        private OnCancelClickListener mCancelClickListener;
    
         public Builder(Context context) {
            this.mDialog = new SureCancelDialog(context, R.style.Theme_AppCompat_Dialog);
            LayoutInflater inflater =
                    (LayoutInflater) context.getApplicationContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            //加载布局文件
            this.mLayout = inflater.inflate(R.layout.dialog_sure_cancel, null, false);

            //添加布局文件到 Dialog
            this.mDialog.addContentView(mLayout, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
                    ViewGroup.LayoutParams.WRAP_CONTENT));
            this.mTvContent = mLayout.findViewById(R.id.tv_content);
            this.mTvCancel = mLayout.findViewById(R.id.tv_cancel);
            this.mTvPositive = mLayout.findViewById(R.id.tv_positive);
        }

         /**
         * 设置 Dialog 内容
         * @param content 内容
         * @return
         */
        public Builder setContent(@NonNull String content) {
            mTvContent.setText(content);
            return this;
        }

        /**
         * 确定回调
         * @param onClickListener
         * @return
         */
        public Builder comfirm(OnConfirmClickListener onClickListener){
            this.mSureClickListener = onClickListener;
            return this;
        }

        public Builder cancel(OnCancelClickListener onClickListener){
            this.mCancelClickListener = onClickListener;
            return this;
        }

        public SureCancelDialog create() {
            mTvCancel.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if (mCancelClickListener != null) {
                        mCancelClickListener.cancel();
                    }
                    mDialog.dismiss();
                }
            });

            mTvPositive.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    if (mSureClickListener != null) {
                        mSureClickListener.confirm();
                    }
                }
            });
            mDialog.setContentView(mLayout);
            mDialog.setCancelable(true);                //用户可以点击后退键关闭 Dialog
            mDialog.setCanceledOnTouchOutside(false);   //用户不可以点击外部来关闭 Dialog
            return mDialog;
        }
        
         public SureCancelDialog show() {
            if (mDialog != null) {
                mDialog.show();
            }
            return mDialog;
        }
    }

     public interface OnConfirmClickListener {
        void confirm();
    }

    public interface OnCancelClickListener {
        void cancel();
    }
}

相关文章

  • Dialog

    安卓dialog的使用+如何自定义dialog自定义Dialog自定义Dialog 自定义

  • 自定义Dialog

    自定义Dialog的主题 自定义Dialog的布局文件 继承Dialog 并在onCreate方法中将布局设置给D...

  • 实现图片Dialog中带ViewPager

    效果图 实现思路 自定义Dialog,为Dialog添加自定义布局,自定义PagerAdapter以及PageTr...

  • 【Android】自定义全屏dialog

    一、在themes.xml中添加自定义dialog的样式 二、创建dialog基类 三、创建自定义dialog的布...

  • Android圆角对话框Dialog

    需求:模仿iOS样式Dialog对话框。 自定义Dialog 核心代码: Dialog样式: Dialog布局文件...

  • Android自定义Dialog及其点击事件

    在项目开发中,经常要用到dialog。但是系统的dialog太丑,所有我们要自定义dialog。下面的先介绍自定义...

  • 一个漂亮的自定义Dialog

    这是一个自定义的dialog项目 自定义的dialog,具有如下特点 圆角的dialog View 圆形图片的ti...

  • Flutter Dialog 动画

    本文对 Dialog 做一次系统性学习记录,包括系统 Dialog,自定义 Dialog,Dialog 动画。 A...

  • 自定义Dialog

    仿IOS自定义的Dialog: 1、Util帮助类创建dialog 2、布局文件 :loading_dialog....

  • 自定义Dialog实现透明无遮罩进度框

    效果图: 自定义Dialog继承自Dialog params.dimAmount=0:设置dialog弹出后,背景...

网友评论

      本文标题:自定义Dialog

      本文链接:https://www.haomeiwen.com/subject/mrxbdktx.html