Android Dialog对话框

刺骨的言语ヽ痛彻心扉 2022-08-22 11:29 347阅读 0赞

在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择,或者给用户提示,这个情况下方便了客户,也便利了自己,不用重复的去创建Activity,可谓“他好,我也好”。这些功能我们们叫它Android Dialog对话框,在我们使用Android的过程中,Android Dialog的类型也分好几种。

AlertDialog实现方法(建造者模式)
实例化建造者AlertDialog.Builder
利用builder设置对话框的各种属性
setTitle(标题)
setMessage(消息)
setIcon(图标)
setCancelable(boolean b)设置是否可以取消
setPositiveButton() 设置正面按钮及点击事件
setNegativeButton() 设置反面按钮及点击事件
setNeutralButton() 设置中立按钮及点击事件
今天给大家介绍几种常见的Dialog

1、提示Dialog

  1. public void alertClick(View v) {
  2. //创建 一个提示对话框的构造者对象
  3. AlertDialog.Builder builder = new AlertDialog.Builder(this);
  4. builder.setTitle("提示");//标题
  5. builder.setIcon(R.drawable.ic_launcher);//图标
  6. builder.setMessage("你寂寞吗?");
  7. builder.setCancelable(false);//能否被取消
  8. //正面的按钮(肯定)
  9. builder.setPositiveButton("是", new DialogInterface.OnClickListener() {
  10. @Override
  11. public void onClick(DialogInterface dialog, int which) {
  12. Toast.makeText(MainActivity.this, "那我给你介绍个妹子吧", Toast.LENGTH_SHORT).show();
  13. dialog.cancel();
  14. }
  15. });
  16. //反面的按钮(否定)
  17. builder.setNegativeButton("否", new DialogInterface.OnClickListener() {
  18. @Override
  19. public void onClick(DialogInterface dialog, int which) {
  20. Toast.makeText(MainActivity.this, "那你自己玩吧", Toast.LENGTH_SHORT).show();
  21. dialog.cancel();
  22. }
  23. });
  24. //中立的按钮
  25. builder.setNeutralButton("沉默", new DialogInterface.OnClickListener() {
  26. @Override
  27. public void onClick(DialogInterface dialog, int which) {
  28. Toast.makeText(MainActivity.this, "你到是说句话", Toast.LENGTH_SHORT).show();
  29. dialog.cancel();
  30. }
  31. });
  32. builder.show();
  33. }

这个提示带有一句提示消息,并带有三个按钮,实现效果如下:
这里写图片描述

2、多项单选Dialog,顾名思义就是多项里面选择一个,实现代码如下:

  1. public void selectClick(View v){
  2. AlertDialog.Builder builder = new AlertDialog.Builder(this);
  3. builder.setTitle("请选择一位");
  4. builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
  5. @Override
  6. public void onClick(DialogInterface dialog, int which) {
  7. Toast.makeText(MainActivity.this, items[which], Toast.LENGTH_SHORT).show();
  8. }
  9. });
  10. builder.show();
  11. }

效果图如下:
这里写图片描述

3、多项多选Dialog,即多项选择,实现代码如下:

  1. public void multiClick(View v) {
  2. names.clear();
  3. AlertDialog.Builder builder = new AlertDialog.Builder(this);
  4. builder.setTitle("请选择");
  5. builder.setMultiChoiceItems(items, null, new DialogInterface.OnMultiChoiceClickListener() {
  6. @Override
  7. public void onClick(DialogInterface dialog, int which, boolean isChecked) {
  8. if (isChecked) {
  9. names.add(items[which]);
  10. Toast.makeText(MainActivity.this, items[which] + "被选中了", Toast.LENGTH_SHORT).show();
  11. }else{
  12. names.remove(items[which]);
  13. Toast.makeText(MainActivity.this, items[which] + "被取消了", Toast.LENGTH_SHORT).show();
  14. }
  15. }
  16. });
  17. builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
  18. @Override
  19. public void onClick(DialogInterface dialog, int which) {
  20. Toast.makeText(MainActivity.this, Arrays.toString(names.toArray()), Toast.LENGTH_SHORT).show();
  21. dialog.cancel();
  22. }
  23. });
  24. builder.show();
  25. }

效果如下图:
这里写图片描述

4、登录Dialog,此处需要自定义一个login_layout布局,并将其填充进去:

  1. public void loginClick(View v){
  2. AlertDialog.Builder builder = new AlertDialog.Builder(this);
  3. builder.setIcon(R.drawable.ic_launcher);
  4. builder.setTitle("登录");
  5. final View view = getLayoutInflater().inflate(R.layout.login_layout,null);
  6. builder.setView(view);
  7. builder.setPositiveButton("登录", new DialogInterface.OnClickListener() {
  8. @Override
  9. public void onClick(DialogInterface dialog, int which) {
  10. EditText et_username = (EditText) view.findViewById(R.id.editText_username);
  11. EditText et_password = (EditText) view.findViewById(R.id.editText_password);
  12. String username = et_username.getText().toString();
  13. String password = et_password.getText().toString();
  14. Toast.makeText(MainActivity.this, username+"-"+password, Toast.LENGTH_SHORT).show();
  15. dialog.cancel();
  16. }
  17. });
  18. builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
  19. @Override
  20. public void onClick(DialogInterface dialog, int which) {
  21. dialog.cancel();
  22. }
  23. });
  24. builder.show();
  25. }

实现效果如下:
这里写图片描述

总结:当然dialog样式还有很多种,因为这个布局可以自定义,所以扩展空间无限,大家实际开发过程中根据自己需求来定义自己的dialog给用户方便也给自己方便。

转载地址http://mp.weixin.qq.com/s?__biz=MzAwOTUyNzI3Ng==&mid=2652071068&idx=1&sn=1a0e3d8790ad2b4a6232e6bea24c16e4&scene=23&srcid=0527246AatTnvLnbRcWxZCqT#rd

发表评论

表情:
评论列表 (有 0 条评论,347人围观)

还没有评论,来说两句吧...

相关阅读

    相关 对话框Dialog总结

    VS.net bate 2 出来也很久了,感觉还可以。在查资料的时候看到国外有一篇专门的文章介绍对话框的,就决定写这篇文章,让大家都有个好的起点。现在我们开发吧!