Android_对话框
1、普通对话框
1、在xml中:
添加一个弹出对话框的按钮
2、在java中:(*可有可无,自定义设置)
①、创建对话框建造者对象
*②、添加标题
*③、添加标题图标
*④、添加内容
*⑤、添加按钮
⑥、创建对话框对象
*⑦、设置返回键、框外点击无效化
⑧、显示对话框
3、构建者模式、构建链模式创建
链式点设置出来
4、给按钮加监听(注意:包名):
假设在本类中加在普通监听:
!!!!!!则导入的包名为:android.view.View.OnClickListener
但是在对话框中的按钮监听与本类中的监听名都为OnClickListener,在导入本类中的android.view.View.OnClickListener包后不能再次导入其他同名的包,所以在对话框的监听前面要把包名补齐用来区分不同的监听!!!!!!!
2、条目对话框
1、在xml中
略
2、在java中
效果:
3、单选对话框
1、在xml中
略
2、java中
效果:
3、多选对话框
在java中:
4、时间对话框
java中:
时间对话框:DatePickerDialog
扩展实现功能:
第一次弹出时显示当前时间,选择一个时间点击确定后 ,将时间改变在Button按钮的文本,当再次点击时,弹出的对话框将在上次选择的时间点上(即Button文本的时间点)
1、声明成员变量
2、在OnCreat()方法中给年月日赋值
要在第一次加载时赋值,如果在监听中赋值则每次点开都是处于当前时间
3、编写监听(对话框默认会有确定按钮,此监听为确定按钮的对话框)
这里每次点击确定后,将选中的时间Syear, monthOfYear, dayOfMonth赋值给成员变量year、month、day用于下次点击时的初始化
这里的month不用+1,是应为month没有给用户看,只是给系统看,所以虽然7月时month为6,但是下次初始化系统会将6 变成7 显示给用户
5、自定义对话框
可自己通过xml布局文件自定义对话框,并弹出
在java中:
扩展增加自定义对话框中Button的监听
自定义对话框Dialog本身没有可以设置按钮的方法,需要自己加入
问题1:直接加监听
1、在xml中给自定义对话框中的按钮加监听
2、设置监听
3、结果
4、错误原因
由于当前是Activity界面,在Activity中没有对话框中的按钮,所以无法找到Button对应的监听方法
(Click方法在Activity上,然而Button在Dialog上没有在Activity上所以不能被找到)
问题2:通过id增加监听
1、在xml中给自定义对话框中的按钮加id
2、java中 在OnCreate()方法里初始化Button
3、增加监听
4、结果
5、错误原因
bt_dig 为空值,无法设置监听
!!!原因是因为获取id的方法是this.findViewById(R.id.bt_dig); 中的this指的是当前的activity,然而Button确实在Dialog中,所以无法获取!!!!
正确:
!!!因为Button是设置在自定义的Dialog上,所以初始化不能通过当前的activity来获取,要在Dialog初始化布局之后通过Button所在的Dialog对象上获取!!!
结果:
扩展取消标题栏
由弹出的自定义对话框可知,即使没有设置title标题,系统仍然会保留title的位置,文本为空
取消标题栏:
效果:
同样的也可以取消当前activity的标题栏,通过当前的activity对象,并且在加在布局之前设置取消
效果: