Android中自定义对话框
来源:互联网 发布:软件开发监理细则 编辑:程序博客网 时间:2024/05/16 19:52
在安卓基础中,我学习到了定义一个对话框弹窗,用来确定和取消,选择一些内容,进度等等,项目中进一步学会了自己定义对话框,不用系统的。
首先是调用系统的对话框,
AlertDialog.Builder builder = new Builder(this);builder.setTitle("我是对话框");builder.setMessage("对话框显示的内容");builder.setPositiveButton("确定", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {Toast.makeText(getApplicationContext(), "确定被点击了", 0).show();}});builder.setNegativeButton("取消", new OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {//什么都不写默认实现就是关闭掉对话框}});builder.setCancelable(false);builder.create().show();}
代码如上,首先new一个AlertDialog.builder对象,然后setTitle(),setMessage(),setPositionButton就是确定按钮啦,在4.X版本是右面的按钮,2.X是左面的按钮,这里传两个值,第一个是按钮显示的名字,第二个是一个监听器;同样的,还有setPositiveButton(),同样传入两个参数。
但这个的对话框一看就是系统的,我们上淘宝,点退出的时候,对话框是很漂亮的,这就需要自定义对话框。简单几步:
首先,要自己写对话框的布局文件XML:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="300dip" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="vertical" android:background="#ffffff" > <TextView android:layout_width="300dip" android:layout_height="50dip" android:background="#66ff6600" android:gravity="center" android:text="请输入密码" android:textColor="#000000" android:textSize="22sp" /> <EditText android:id="@+id/et_setup_pwd" android:layout_width="280dip" android:layout_height="wrap_content" android:hint="请输入密码" android:inputType="textPassword" /> <LinearLayout android:layout_width="300dip" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="horizontal" > <Button android:id="@+id/ok" android:layout_width="140dip" android:layout_height="wrap_content" android:text="确定" /> <Button android:id="@+id/cancel" android:layout_width="140dip" android:layout_height="wrap_content" android:text="取消" /> </LinearLayout></LinearLayout>显示的事输入两次密码的界面;
然后在对应要调用这个的java文件中写相应的加载方法:
private Button ok;private Button cancle;private EditText et_setup_pw;private EditText et_setup_confirm;private AlertDialog dialog;protected void showLostDialog() {final String passwordFromSp = sp.getString("password", "");if(TextUtils.isEmpty(passwordFromSp)) {AlertDialog.Builder builder = new Builder(this);View view = View.inflate(this, R.layout.dialog_setup_password, null);ok = (Button) view.findViewById(R.id.ok);cancle = (Button) view.findViewById(R.id.cancel);et_setup_pw = (EditText) view.findViewById(R.id.et_setup_pwd);et_setup_confirm = (EditText) view.findViewById(R.id.et_setup_confirm);builder.setView(view);dialog = builder.show();ok.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {String password = et_setup_pw.getText().toString();String repassword = et_setup_confirm.getText().toString();if(TextUtils.isEmpty(password)||TextUtils.isEmpty(repassword)) {Toast.makeText(HomeActivity.this,"输入的密码不能为空" , 0).show();return;} else if(!password.equals(repassword)) {Toast.makeText(HomeActivity.this,"密码和确认密码不一致" , 0).show();return;}Editor editor = sp.edit();editor.putString("password", MD5Utils.md5Password(password));editor.commit();Toast.makeText(HomeActivity.this,"密码保存成功" , 0).show();dialog.dismiss();//进入第一个界面Intent intent = new Intent(getApplicationContext(), LostFindActivity.class);startActivity(intent);}});cancle.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {dialog.dismiss();}});} else {AlertDialog.Builder builder = new Builder(this);View view = View.inflate(this, R.layout.dialog_enter_password, null);builder.setView(view);dialog = builder.show();ok = (Button) view.findViewById(R.id.ok);cancle = (Button) view.findViewById(R.id.cancel);et_setup_pw = (EditText) view.findViewById(R.id.et_setup_pwd);ok.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {String password = et_setup_pw.getText().toString();if(!MD5Utils.md5Password(password).equals(passwordFromSp)) {Toast.makeText(HomeActivity.this,"密码不正确" , 0).show();return;} else {//进入界面Toast.makeText(HomeActivity.this,"密码正确" , 0).show();dialog.dismiss();Intent intent = new Intent(getApplicationContext(), LostFindActivity.class);startActivity(intent);return;}}});cancle.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {dialog.dismiss();}});}}和以前不同的是这次不再setTitle一系列操作了,而是先用inflate()把这个文件变成view,然后builder.setView,加载进这个构造器内,然后show()出来就行,如果要修改组件里面的内容,可以先声明组件,然后初始化,然后对相应的按钮设置相应的点击事件。
一般来说,取消就是把这个对话框消除掉,builder.dismiss()不能用,但是builder.show()会返回一个AlertDialog对象,在类外生命这个对象,然后在show的时候获得这个对象,这个就在取消按钮监听器中调用这个dialog.dismiss()方法消除掉这个对话框。
0 0
- Android中自定义对话框
- Android中自定义对话框
- Android中自定义对话框(Dialog)
- Android中自定义对话框(Dialog)
- Android中自定义对话框小结
- Android中自定义对话框(Dialog)
- Android中自定义对话框Dialog
- Android中Dialog自定义对话框
- Android中自定义对话框(Dialog) <一>
- 去除Android开发中自定义对话框黑底
- Android开发中如何创建自定义对话框
- Android中自定义对话框(Dialog) (转)
- Android中Dialog实现自定义弹出对话框
- android中自定义加载的对话框。。。。
- Android自定义网络加载中对话框
- android中的对话框:自定义对话框
- 自定义 Android 对话框 (AlertDialog) 的样式 (Android中自定义对话框(Dialog) <二>)
- Android Dialog( 自定义对话框)
- maven-appfuse配备步骤
- oc的成员变量的属性
- 最近重构推图系统的总结
- 岁月的剪影【七月风风火火】
- UI Automation资料
- Android中自定义对话框
- /dev/null 的用途
- Maven本地仓库配置
- 全排列
- 电话薄----文件读写
- 图解ASP.NET发布网站至IIS(原)
- j2eeSSH简单利用JSON实现异步查询
- 监控摄像头的测试方法
- phpcms会员中心的头像是如何上传的,数据保存在数据库吗