第25讲 UI组件之 AlertDialog 的各种实现
第25讲 UI组件之AlertDialog 的各种实现
对话框(Dialog)是程序运行中的弹出窗口,例如当用户要删除一个联系方式时,会弹出一个对话框。
Android提供了多种对话框:警告对话框(AlertDialog),进度对话框(ProcessDialog),日期选择对话框(DatePickerDialog),时间选择对话框(TimePickerDialog)。
1.警告对话框AlertDialog
1). AlertDialog的结构:
AlertDialog是一个提示窗口,要求用户做出选择。该对话框中一般会有几个选择按钮、标题信息和提示信息。
a. title 标题是可选部分,如果正文中已经表达清楚信息,可以不设标题。
b. content area 提示内容部分,
c. adition buttons 可以添加操作按钮。
提示:不应该有超过三个操作按钮在对话框。
2).如何创建一个AlertDialog对象:
3). 代码实现
1、简单的对话框
public void test1(Viewview) {
//如何创建一个AlertDialog
//1. AlertDialog.Builder建立一个builder对象,由该类来创建对话框。
AlertDialog.Builderbuilder=new Builder(this);
//2.通过Builder对象设置对话框的标题、内容、按钮以及按钮将要响应的事件。
builder.setTitle("提示信息");
builder.setMessage("我的第一个对话框");
builder.setPositiveButton("确定", newOnClickListener() { // 设置确定按钮
public void onClick(DialogInterface dialog, int
which) {
Toast.makeText(MainActivity.this,"确定", 0).show();
}
});
builder.setNegativeButton("取消", newOnClickListener() { //设置取消按钮
public void onClick(DialogInterface dialog, int
which) {
Toast.makeText(MainActivity.this,"取消", 0).show();
}
});
//3. 调用Builder的create()方法可以创建对话框dialog
AlertDialogalertDialog=builder.create();
//4. 调用AlertDialog的show()方法显示对话框。
alertDialog.show();
}
2、弹出列表
可以对其中的message进行设置
private String[] ss = new String[]{"北京","云南","香港"};
public void test2(Viewview) {
AlertDialog.Builderbuilder=new Builder(this);
builder.setTitle("提示信息");
builder.setItems(ss, new OnClickListener() {
public void onClick(DialogInterfacedialog, int
which) {
Toast.makeText(MainActivity.this,ss[which], 0).show();
}
});
AlertDialogalertDialog=builder.create();
alertDialog.show();
}
3、弹出单选列表
public void test3(Viewview) {
AlertDialog.Builderbuilder=new Builder(this);
builder.setTitle("提示信息");
builder.setSingleChoiceItems(ss, 0, new
OnClickListener(){
public void onClick(DialogInterfacedialog, int
which) {
Toast.makeText(MainActivity.this,ss[which], 0).show();
}
});
AlertDialogalertDialog=builder.create();
alertDialog.show();
}
4、弹出多选框
public void test4(Viewview) {
AlertDialog.Builderbuilder=new Builder(this);
builder.setTitle("提示信息");
builder.setMultiChoiceItems(ss, null,
new OnMultiChoiceClickListener(){
public void onClick(DialogInterface dialog, int
which, boolean isChecked){
Toast.makeText(MainActivity.this,ss[which], 0).show();
}
});
AlertDialogalertDialog=builder.create();
alertDialog.show();
}
其中,null处为默认选择了哪些项,null代表默认什么都没有选。可以改为
new boolean[]{true,true,
false}代表第1、2项为默认选中项。
2. ProgressDialog:进度对话框
有两种创建进度条对话框的方式:
1.直接调用ProgressDialog提供的静态方法show()显示即可
2.创建ProgressDialog,再设置对话框的参数,最后show()出来即可
1.调用静态方法显示的环形进度条:show()方法的参数依次为:当前的Activity.this;标题;提示内容;是否显示进度;是否可以按"回退"键关闭
2.另一种的流程是:
①new ProgressDialog(当前Activity.this); ②设置标题:setTitle()
③设置内容:setMessage() ④设置是否可通过回退按钮关闭:setCancelable()
⑤设置进度条是否显示进度,设置为true的话就会变成第p3中不会动的进度条,setIndeterminate()
⑥设置进度条的类型:两种STYLE_HORIZONTAL水平进度条 STYLE_SPINNER圆形进度条
⑦设置进度条的进度值:setProgress()
3. DatePickerDialog日期选择对话框和TimePickerDialog时间选择对话框
这里的话先要说明一点啊: 这个Date/TimePickerDialog只是供用户来选择日期时间,对于android系统的系统时间,日期没有任何影响,google暂时没有公布系统日期时间设置的API,
构造方法:
DatePickerDialog(当前视图.this; DatePickerDialog.OnDateSetListener()监听器;年;月;日)
TimePickerDialog(当前视图.this; TimePickerDialog.OnTimeSetListener()监听器;小时,分钟,是否采用24小时制)
private Button btndate;
private Button btntime;
private String result = "";
btndate = (Button) findViewById(R.id.btndate);
btntime = (Button) findViewById(R.id.btntime);
btndate.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//这句话是获得当前的系统时间
Calendar cale = Calendar.getInstance();
/*这里的话因为比较麻烦,所有就直接new一个DatePickerDialog对象,构造方法中的参数依次为:
上下文,OnDateSetListener的监听器,整形的年,月,日
*/
new DatePickerDialog(MainActivity.this,new DatePickerDialog.OnDateSetListener() {
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
result += "你选择的是"+year+"年"+monthOfYear+"月"+dayOfMonth+"日";
Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();
}
}
,cale.get(Calendar.YEAR)
,cale.get(Calendar.MONTH)
,cale.get(Calendar.DAY_OF_MONTH)).show();
}
});
btntime.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Calendar cale = Calendar.getInstance();
new TimePickerDialog(MainActivity.this, new TimePickerDialog.OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
result = "";
result += "您选择的时间是:"+hourOfDay+"时"+minute+"分";
Toast.makeText(getApplicationContext(), result, Toast.LENGTH_SHORT).show();
}
}, cale.get(Calendar.HOUR_OF_DAY), cale.get(Calendar.MINUTE), true).show();
}
});
第25讲 UI组件之 AlertDialog 的各种实现的更多相关文章
- 第34讲 UI组件之 ProgressDialog和Message
第34讲UI组件之 ProgressDialog和Message 1.进度对话框 ProgressDialog <1>简介 ProgressDialog是AlertDialog类的一个扩展 ...
- 第28讲 UI组件之 ListView和ArrayAdapter
第28讲 UI组件之 ListView和ArrayAdapter 1. Adapter 适配器 Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带.在常见的 ...
- 第33讲 UI组件_进度条ProcessBar和消息队列处理器handler
第33讲UI组件_进度条ProcessBar和消息队列处理器handler 1. 进度条ProcessBar 一个可视化的进度指示器,代表正在执行的耗时任务.可以为用户展示一个进度条,表示正在执行的任 ...
- 第32讲 UI组件之 时间日期控件DatePicker和TimePicker
第32讲 UI组件之 时间日期控件DatePicker和TimePicker 在Android中,时间日期控件相对来说还是比较丰富的.其中, DatePicker用来实现日期输入设置, Time ...
- 第31讲 UI组件之 Gallery画廊控件
第31讲 UI组件之 Gallery画廊控件 1.Gallery的简介 Gallery(画廊)是一个锁定中心条目并且拥有水平滚动列表的视图,一般用来浏览图片,并且可以响应事件显示信息.Gallery只 ...
- 第30讲 UI组件之 GridView组件
第30讲 UI组件之 GridView组件 1.网格布局组件GridView GridView是一个ViewGroup(布局控件),可使用表格的方式显示组件,可滚动的控件.一般用于显示多张图片,比如实 ...
- 第29讲 UI组件之 ListView与 BaseAdapter,SimpleAdapter
第29讲 UI组件之 ListView与 BaseAdapter,SimpleAdapter 1.BaseAdapter BaseAdapter是Android应用程序中经常用到的基础数据适配器,它的 ...
- 第27讲 UI组件之 ScrollView与底部动态添加数据
第27讲 UI组件之 ScrollView与底部动态添加数据 1. ScrollView(滚动视图) ScrollView(滚动视图)是实现滚动的一个控件,只需要将需要滚动的控件添加到ScrollVi ...
- 第19讲- UI组件之_Button、checkbox、radio
第19讲 UI组件之_Button.checkbox.radio 四.按钮Button Button继承自TextView,间接继承自View.当用户对按钮进行操作的时候,触发相应事件,如点击,触摸. ...
随机推荐
- linux下javaEE系统安装部署
最近公司在将服务器往阿里云上面迁移,所以需要重新在linux上面安装相关的软件以及部署项目,这里用到的linux版本为centos7.0,需要安装的软件有 jdk1.7.mysql5.6.mongo3 ...
- 【小程序开发】微信小程序开发中遇到的那些坑...
第一坑: 设置了三个tabBar,却默认显示第二个,不能展示我的第一个[首页]. "list": [{ "pagePath":"page/KTGJ/i ...
- Android 之 资源文件的介绍及使用
Android 之 资源文件的介绍及使用 1.资源的简单介绍: 在res文件夹中定义:字符串.颜色.数组.菜单.图片.视频等:在应用程序中使用这些资源. 2.使用资源的长处:降低代码量,同一时候为 ...
- repo的小结
repo仅仅是google用Python脚本写的调用git的一个脚本,主要是用来下载.管理Android项目的软件仓库. 1. 下载 repo 的地址: http://android.git.kern ...
- HTML基础总结<链接>
HTML 超链接(链接) HTML使用标签 <a>来设置超文本链接. 超链接可以是一个字,一个词,或者一组词,也可以是一幅图像,您可以点击这些内容来跳转到新的文档或者当前文档中的某个部分. ...
- CSS Hack是什么意思
CSS hack由于不同的浏览器,比如Internet Explorer 6,Internet Explorer 7,Mozilla Firefox等,对CSS的解析认识不一样,因此会导致生成的页面效 ...
- JS的作用域和作用域链
每个函数都有自己的作用域,当执行流进入一个函数时,函数就会被推入栈中,而在函数执行之后,栈将其执行环境弹出,把控制权放回给之前的作用域,全局作用域是最外围的一个作用域,因此,所有全局变量和函数都是作为 ...
- (转)VS无法启动调试:“生成下面的模块时,启用了优化或没有调试信息“
中调试项目遇到错误提示,Visual Studio 2010(或VS2008或VS2005)启动调试的时候,弹出提示信息: 生成下面的模块时,启用了优化或没有调试信息: C:\WINDOWS\Micr ...
- html拼接数据的时候一定要注意null值的问题
后台会返回null文本 如果直接拼接 不仅仅格式问题 前台会显示null 如果是图片 用fiddle抓取 还会发现你请求了一个带域名/null的接口 所以要把null格式化为空文本
- 学习OkHttp wiki--Interceptors
Interceptors 拦截器(Interceptors)是一种强有力的途径,来监控,改写和重试HTTP访问.下面是一个简单的拦截器,对流出的请求和流入的响应记录日志. class LoggingI ...