简单好用的自定义Dialog(一)
来源:互联网 发布:java 接口 静态方法 编辑:程序博客网 时间:2024/05/18 00:44
一、简单介绍。
在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择。这些功能我们叫它Android Dialog对话框,下面我向大家介绍几种Android Dialog对话框的使用方法,希望对大家能有所帮助。
Dialog
Dialog,对话框,一个对话框就是一个小窗口,并不会填满整个屏幕,通常是以模态显示,要求用户必须采取行动才能继续进行剩下的操作。
Android提供了丰富的对话框支持,它提供了如下4中常用的对话框:
AlertDialog:警告对话框,使用最广泛功能最丰富的一个对话框。
ProgressDialog:进度条对话框,只是对进度条进行了简单的封装。
DatePickerDialog:日期对话框。
TimePickerDialog:时间对话框。
所有的对话框,都是直接或间接继承自Dialog类,而AlterDialog直接继承自Dialog,其他的几个类均继承自AlterDialog。
AlertDialog
AlertDialog继承自Dialog类,对于Android内置的AlterDialog,它可以包含一个标题、一个内容消息或者一个选择列表、最多三个按钮。而创建AlterDialog推荐使用它的一个内部类AlterDialog.Builder创 建。使用Builder对象,可以设置AlterDialog的各种属性,最后通过Builder.create()就可以得到AlterDialog对 象,如果只是还需要显示这个AlterDialog,一般可以直接使用Builder.show()方法,它会返回一个AlterDialog对象,并且 显示它。
如果仅仅是需要提示一段信息给用户,那么就可以直接使用AlterDialog的一些属性设置提示信息,涉及到的方法有:
AlterDialog create():根据设置的属性,创建一个AlterDialog。
AlterDialog show():根据设置的属性,创建一个AlterDialog,并且显示在屏幕上。
AlterDialog.Builder setTitle():设置标题。
AlterDialog.Builder setIcon():设置标题的图标。
AlterDialog.Builder setMessage():设置标题的内容。
AlterDialog.Builder setCancelable():设置是否模态,一般设置为false,表示模态,要求用户必须采取行动才能继续进行剩下的操作。
Tips:AlterDialog.Builder的很多设置属性的方法,返回的均是这个AlterDialog.Builder对象,所以可以使用链式方式编写代码,这样更方便。
当一个对话框调用了show()方法后,展示到屏幕上,如果需要消除它,可以使用DialogInterface接口声明的两个方 法,cancel()和dismiss()使对话框取或者消除,这两个方法的作用是一样的,不过推荐使用dismiss()。Dialog和 AlterDialog都实现了DialogInterface接口,所以只要是对话框,均可以使用这两个方法来消除对话框。
二、 几种常用的dialog
1)简单的对话
Dialog dialog = new AlertDialog.Builder(getActivity()) .setTitle(R.string.left_slider_alertdialog_title) // 创建标题 .setMessage(R.string.left_slider_alertdialog_message) // 表示对话框中的内容 .setPositiveButton(R.string.left_slider_alertdialog_ok, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { UserInfoDBHelper.logout2(); refreshUserInfo(); } }) .setNegativeButton(R.string.left_slider_alertdialog_cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }).create(); dialog.show(); }
(http://img.blog.csdn.net/20170301094527677?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzcyMzcyNDU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 2) AlterDialog的按钮
AlterDialog内置了三个按钮,可以直接使用setXxxButton()方法进行设置,对于一般的对话框,使用三个按钮基本上也够用了,下面是这三个方法的签名:
AlterDialog.Builder setPositiveButton(CharSquence text , DialogInterFace.OnClickListener):一个积极的按钮,一般用于“OK”或者“继续”等操作。
AlterDialog.Builder setNegativeButton(CharSquence text , DialogInterFace.OnClickListener):一个负面的按钮,一般用于“取消”操作。
AlterDialog.Builder setNeutralButton(CharSquence text , DialogInterFace.OnClickListener):一个比较中性的按钮,一般用于“忽略”、“以后提醒我”等操作。
上面介绍的DialogInterface接口,还提供了一系列的事件响应,这三个按钮均需要传递一个 DialogInterFace.OnClickListener接口对象,实现其点击事件的触发,在这个接口中需要实现一个 onClick(DialogInterface dialog,int which),dialog为当前触发事件的对话框对象接口,可以直接强制转换为AlterDialog进行操作;which为点击按钮的标识符,是一个 整形的数据,对于这三个按钮而言,每个按钮使用不同的int类型数据进行标识:Positive(-1)、Negative(-2)、 Neutral(-3)。
而除了专门为按钮点击实现的DialogInterFace.OnClickListener事件外,DialogInterface还提供了 一些其他的事件,供Dialog对象响应,这些事件只是对Dialog声明周期各个状态的响应,一看就明白了,就不再详细讲解了,下面是这几个事件的说 明:
interface DialogInterface.OnCancelListener:当对话框调用cancel()方法的时候触发。
interface DialogInterface.OnDismissListener:当对话框调用dismiss()方法的时候触发。
interface DialogInterface.OnShowListener:当对话框调用show()方法的时候触发。
interface DialogInterface.OnMultiChoiceListener:当对话框使用多选列表,并且选中的时候触发。
AlertDialog.Builder builder = new AlertDialog.Builder( MainActivity.this); builder.setTitle("提示"); builder.setMessage("这是一个多按钮普通的对话框!"); builder.setIcon(R.drawable.ic_launcher); builder.setPositiveButton("确定", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "确定被点击", Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }); builder.setNegativeButton("否定", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "否定被点击", Toast.LENGTH_SHORT).show(); dialog.dismiss(); } }); builder.setNeutralButton("忽略", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this, "忽略被点击", Toast.LENGTH_SHORT).show(); dialog.cancel(); } }); builder.show();
![这里写图片描述](http://img.blog.csdn.net/20170301102756338?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzcyMzcyNDU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
3)AlterDialog的列表形式
AlterDialog除了展示一些提示信息,还可以展示一种列表的形式,需要使用到 Builder.setItems(CharSequence[] items,DialogInterface.OnClickListener listener)方法进行设置,它需要传递一个CharSequenece类型的数组,以绑定列表的数据,它同样需要传递一个 DialogInterface.OnClickListener接口,以响应列表项的点击,而这个接口中onClick方法的which参数,为当前点 击触发项的items中的下标。
btnListView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub AlertDialog.Builder builder = new AlertDialog.Builder( MainActivity.this); builder.setTitle("请选择城市"); //items使用全局的finalCharSequenece数组声明 builder.setItems(items, new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub String select_item = items[which].toString(); Toast.makeText(MainActivity.this, "选择了---》" + select_item, Toast.LENGTH_SHORT) .show(); } }); builder.show(); }});
4单选框
new AlertDialog.Builder(this).setTitle("复选框").setMultiChoiceItems( new String[] { "Item1", "Item2" }, null, null) .setPositiveButton("确定", null) .setNegativeButton("取消", null).show();
5)填写信息的dialog
.信息内容是一个简单的View类型
new AlertDialog.Builder(this).setTitle("请输入").setIcon( android.R.drawable.ic_dialog_info).setView( new EditText(this)).setPositiveButton("确定", null) .setNegativeButton("取消", null).show();
6)多选框
new AlertDialog.Builder(this).setTitle("单选框").setIcon( android.R.drawable.ic_dialog_info).setSingleChoiceItems( new String[] { "Item1", "Item2" }, 0, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }).setNegativeButton("取消", null).show();
自定义view将在
简单好用的自定义Dialog(二)中详细描述。。。
- 简单好用的自定义Dialog(一)
- 简单好用的自定义Dialog(二)
- 好用的dialog
- 自定义Dialog的简单实现
- 简单快捷的自定义 Dialog
- Android 简单的自定义Dialog
- 一个简单的自定义Dialog
- Android 简单的自定义dialog
- 一个简单的自定义Dialog
- Android 自定义dialog(封装好的)
- 简单好用的自定义DialogFragment
- android最简单的自定义全屏Dialog
- Android简单实用的自定义Dialog
- Android自定义最简单的dialog
- android 自定义dialog的简单实现
- Android 自定义Dialog的简单实现
- 实现一个简单的自定义Dialog弹窗。
- Android自定义Dialog带Dialog的显示消失动画(一)
- 字典 -dict
- 集合框架-List()
- 未来的十二个趋势
- Leetcode 刷题笔记(1)
- [LeetCode]407. Trapping Rain Water II
- 简单好用的自定义Dialog(一)
- Java日期简化工具Joda-Time
- Median of Two Sorted Arrays
- Rx全家桶是当前主流技术.
- bzoj 1572 贪心+堆
- EMGU+C#联合编译 报错解决
- MICRO USB引脚定义以及接法
- 设计模式之-简介
- pandas学习:对series和dataframe进行排序