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对象,并且在加在布局之前设置取消
这里写图片描述
效果:

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值