自定义AlertDialog.Builder对话框

在工作中,原生态的AlertDialog已经远远不能满足我们工作的需求,这时候,就需要使用自定义的AlertDialog.Builder:
在自定义之前,我们先了解下,

**原生态的AlertDialog的基本使用**
setTitle():设置对话框标题
setMessage():设置对话框内容
setIcon():设置对话框图标
setItems():设置要在对话框中显示的列表项目
**setView();设置自定义的对话框样式**
setSingleChoiceItems();设置对话框显示出一个单选框
setMultiChoiceItems():设置对话框显示一系列的复选框
setPositiveButton();设置对话框显示一个"确定"的按钮
setNegativeButton();设置对话框显示一个"取消"的按钮
setNeutralButton();设置对话框显示一个"退出"的按钮
create();创建一个AlertDialog的对话框
show();显示对话框

实例代码:
 //对话框的实现
        final AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("请输入相关的信息");
        builder.setMessage("准备开始下载了");
        //设置确认按钮
        builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                Toast.makeText(SplashActivity.this, "完成了", Toast.LENGTH_SHORT).show();
            }
        });
        //设置取消按钮
        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialogInterface, int i) {
                //取消就要让界面消失
                mDialog.dismiss();
            }
        });
        //按住旁边的按钮,对话框也消失
        builder.setOnCancelListener(new DialogInterface.OnCancelListener() {
            @Override
            public void onCancel(DialogInterface dialogInterface) {
                mDialog.dismiss();
            }
        });
        //显示对话框
        mDialog = builder.show();

示意图:

这里写图片描述

2,自定义:就必须使用setView();设置自定义的布局

 //设置密码框
    private void showSetPasswordDialog() {

        mBuilder = new AlertDialog.Builder(HomeActivity.this);
        mView = View.inflate(getApplicationContext(), R.layout.dialog_view_home, null);
        //设置自定义的布局
        mBuilder.setView(mView);
        //拿到控件,设置数据
        mEt_first_password = (EditText) mView.findViewById(R.id.et_first_password);
        mEt_second_password = (EditText) mView.findViewById(R.id.et_second_password);
        mBtn_ok = (Button) mView.findViewById(R.id.btn_ok);
        mBtn_cancel = (Button) mView.findViewById(R.id.btn_cancel);
        //给button设置点击事件
        //取消
        mBtn_cancel.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                //关闭掉对话框,拿到对话框的对象
                mAlertDialog.dismiss();
            }
        });
        //确认
        mBtn_ok.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                //先获得两个输入框的值
                String first_passwprd = mEt_first_password.getText().toString().trim();
                String secode_password = mEt_second_password.getText().toString().trim();
                // 先做非空判断
                if (TextUtils.isEmpty(first_passwprd) || TextUtils.isEmpty(secode_password)) {
                    //说明至少有一个为空
                    Toast.makeText(HomeActivity.this, "请按要求输入", Toast.LENGTH_SHORT).show();
                    return;
                }
                //在比对两个密码是否相等
                if (!first_passwprd.equals(secode_password)) {
                    //说明不相等
                    Toast.makeText(HomeActivity.this, "两次输入不相等", Toast.LENGTH_SHORT).show();
                    return;
                }
                //走到这里,说明数据没有问题
                //相等的话,保存密码
                SPUtils.putString(getApplicationContext(), Constacts.PASSWORD, MD5Utils.Md5Utils(first_passwprd));
                mAlertDialog.dismiss();
            }
        });
        mAlertDialog = mBuilder.show();
    }
其布局文件为:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="wrap_content">
    <TextView
        android:text="设置密码"
        android:textColor="#fff"
        android:background="@drawable/blue_bkg"
        style="@style/Tv_Title"/>

    <EditText
        android:id="@+id/et_first_password"
        android:hint="请输入密码"
        android:textColor="#000"
        android:inputType="numberPassword"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <EditText
        android:id="@+id/et_second_password"
        android:hint="请确认输入"
        android:inputType="numberPassword"
        android:textColor="#000"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

     <LinearLayout
         android:layout_width="match_parent"
         android:orientation="horizontal"
         android:layout_height="wrap_content">
         <Button
             android:id="@+id/btn_ok"
             android:layout_width="0dp"
             android:layout_weight="1"
             android:text="确认"
             android:background="@drawable/btn_selector"
             android:layout_height="wrap_content"/>
         <Button
             android:id="@+id/btn_cancel"
             android:layout_width="0dp"
             android:layout_weight="1"
             android:text="取消"
             android:background="@drawable/btn_selector"
             android:layout_height="wrap_content"/>

     </LinearLayout>
</LinearLayout>

效果示意图:

这里写图片描述

2.1,自定义AlertDialog方法二

private AlertDialog.Builder defineDialog;
//1,找到相应的布局文件
View view = View.inflate(getApplicationContext,R.Layout.define_AlertDialog_item);
//2,获取布局中的控件
    //TODO
//3,创建一个AlertDialog的对话框,并加载自定义对话框样式
 defineDialog = new AlertDialog.Builder(getApplicationContext)
                 .setTitle("付款界面"),
                 .setView(view),
                 .setPositiveButton("确认",this),
                 .setNegativeButton("取消",this),
                 .create();
defineDialog .show();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值