在工作中,原生态的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();