Android中的多种对话框样式详解_手机端多选框样式(1)

收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
img
img

如果你需要这些资料,可以戳这里获取

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人

都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  1. AlertDialog dialog = builder.create();
  2. //显示对话框
  3. dialog.show();

复制代码

除了
Positive

Negative
,还可以设置一个
Neutral
按钮,表示中立,既不确定也不取消。

  1. builder.setNeutralButton(“纠结”, new OnClickListener() {
  2. @Override
  3. Public void onClick(DialogInterface dialog, int which) {
  4. }
  5. });

复制代码

2.列表对话框

如果需要给用户提供的选择比较多,就不要使用按钮了,按钮过多对话框会很不好看,我们可以设置一个列表,在列表中列出所有提供的选项。

代码如下:

  1. AlertDialog.Builder builder = new Builder(this);
  2. builder.setIcon(android.R.drawable.ic_dialog_alert);
  3. builder.setTitle(“手机准备自爆!”);
  4. //定义列表中的选项
  5. final String[] items = new String[]{
  6. “关机”,
  7. “重启手机”,
  8. “写遗书”,
  9. “跑路”,
  10. “把手机送给小明”
  11. };
  12. //设置列表选项
  13. builder.setItems(items, new OnClickListener() {
  14. //点击任何一个列表选项都会触发这个方法
  15. //arg1:点击的是哪一个选项
  16. @Override
  17. public void onClick(DialogInterface dialog, int which) {
  18. }
  19. });
  20. // 取消选择
  21. builder.setNegativeButton(“取消”, new OnClickListener() {
  22. @Override
  23. public void onClick(DialogInterface dialog, int which) {
  24. }
  25. });
  26. builder.show();

复制代码

3.单选对话框

选项较多时也可以使用单选对话框,给用户提供多个选项,但只允许选择一个。

代码如下:

注意对话框的图标、
title

message
等都不是必须的,看需求确定是否要设置,需要特别注意的一点,非确定取消对话框,不要设置
message
,比如像以下的单选对话框,设置了
message
,那么单选选项就会无法显示。

  1. AlertDialog.Builder builder = new Builder(this);
  2. builder.setTitle(“请选择您的家乡”);
  3. //定义单选的选项
  4. String[] items = new String[]{
  5. “地球”,
  6. “塞伯坦”,
  7. “M78星云”,
  8. “氪星”
  9. };
  10. //设置单选选项
  11. //arg1:表示默认选中哪一项,-1表示没有默认选中项
  12. builder.setSingleChoiceItems(items, -1, new OnClickListener() {
  13. //点击任何一个单选选项都会触发这个侦听方法执行
  14. //arg1:点击的是哪一个选项
  15. @Override
  16. public void onClick(DialogInterface dialog, int which) {
  17. // 执行选中某个选项后的业务逻辑
  18. //点击某个选项后,触发onClick执行,要让对话框消失
  19. dialog.dismiss();
  20. }
  21. });
  22. // 设置取消按钮,用户可以决定不选
  23. builder.setNegativeButton(“取消”, new OnClickListener() {
  24. @Override
  25. public void onClick(DialogInterface dialog, int which) {
  26. }
  27. });
  28. //直接调用builder的show方法同样可以显示对话框,其内部也是先创建对话框对象,然后调用对话框的show()
  29. builder.show();

复制代码

4.多选对话框

还有一个对选对话框,给用户提供多个选项,并且可以同时选择多个。

代码如下:

  1. AlertDialog.Builder builder = new Builder(this);
  2. builder.setTitle(“请选择您需要的武器”);
  3. //定义单选的选项
  4. String[] items = new String[]{
  5. “AK-47”,
  6. “开山刀”,
  7. “啤酒瓶”,
  8. “板凳”,
  9. “创可贴”
  10. };
  11. //使用一个boolean数组表示默认选中项,因为是多选,可以有多个默认选中项,哪项被选中就把值赋为true
  12. final boolean[] checkedItems = new boolean[]{
  13. false,
  14. false,
  15. false,
  16. true,
  17. True
  18. };
  19. //设置多选选项
  20. //arg2:设置多选侦听
  21. builder.setMultiChoiceItems(items, checkedItems, new OnMultiChoiceClickListener() {
  22. //点击任何一个多选选项都会触发这个方法
  23. //arg1:点击的是哪一个选项
  24. //arg2:当前选项是否被选中
  25. @Override
  26. public void onClick(DialogInterface dialog, int which, boolean isChecked) {
  27. //点击某个选项,就改变该选项对应的boolean值,记录其是否被选中
  28. checkedItems[which] = isChecked;
  29. }
  30. });
  31. //用户选好要选的选项后,点击确定按钮
  32. builder.setPositiveButton(“确定”, new OnClickListener() {
  33. @Override
  34. public void onClick(DialogInterface dialog, int which) {
  35. // TODO Auto-generated method stub
  36. }
  37. });
  38. // 取消选择
  39. builder.setNegativeButton(“取消”, new OnClickListener() {
  40. @Override
  41. public void onClick(DialogInterface dialog, int which) {
  42. }
  43. });
  44. builder.show();

复制代码

5.View对话框

对话框中还可以直接显示一个
View
对象,这个特性使对话框的样式更多种多样了。

代码如下:

  1. AlertDialog.Builder builder = new Builder(this);
  2. builder.setIcon(android.R.drawable.ic_dialog_info);
  3. builder.setTitle(“请输入内容”);
  4. //创建一个EditText对象设置为对话框中显示的View对象
  5. builder.setView(new EditText(MainActivity.this));
  6. //用户选好要选的选项后,点击确定按钮
  7. builder.setPositiveButton(“确定”, new OnClickListener() {
  8. @Override
  9. public void onClick(DialogInterface dialog, int which) {
  10. }
  11. });
  12. // 取消选择
  13. builder.setNegativeButton(“取消”, new OnClickListener() {
  14. @Override
  15. public void onClick(DialogInterface dialog, int which) {
  16. }
  17. });
  18. builder.show();

复制代码

对话框中显示的View对象,除了直接new一个指定的组件,也可以使用布局文件来定义一个布局,然后填充成View对象,用这样的自定义View可以让对话框可以显示出很复杂的内容。

这个对话框的内容是用布局文件定义的,很明显,是一个水平线性布局包裹一个输入框和一个文本框,这个布局文件比较简单,代码就不展示了。

代码如下:

  1. AlertDialog.Builder builder = new Builder(this);
  2. builder.setIcon(android.R.drawable.ic_dialog_info);
  3. builder.setTitle(“请输入验证码”);
  4. //把布局文件先填充成View对象
  5. View view = View.inflate(MainActivity.this, R.layout.item, null);
  6. //把填充得来的view对象设置为对话框显示内容
  7. builder.setView(view);
  8. builder.setPositiveButton(“确定”, new OnClickListener() {
  9. @Override
  10. public void onClick(DialogInterface dialog, int which) {
  11. }
  12. });
  13. builder.setNegativeButton(“取消”, new OnClickListener() {
  14. @Override
  15. public void onClick(DialogInterface dialog, int which) {
  16. }
  17. });
  18. builder.show();

复制代码

6.自定义Dialog

AlertDialog
的基类是
Dialog
,我们可以定义一个类直接继承
Dialog
,重写里面的方法,同样可以实现自定义对话框的样式。

首先先创建一个布局文件,定义对话框的样式。

img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

[外链图片转存中…(img-HREqlqXq-1715840259080)]
[外链图片转存中…(img-tULePo3t-1715840259081)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新

需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)

如果你需要这些资料,可以戳这里获取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值