文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android中如何使用系统对话框

2023-05-30 19:19

关注

Android中如何使用系统对话框,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

目录

Android中如何使用系统对话框

一、系统对话框的几种类型与实现

在项目的实际开发中,用到的系统对话框几乎是没有的。原因大概包含以下几点:

样式过于单一,不能满足大部分实际项目中的需求。

对话框的样式会根据手机系统版本的不同而变化。不能达到统一的样式。

能实现的功能过于简单。

在这里先附上下面代码中出现文本的string.xml文件。

<string name="dialog_normal_content">我是普通dialog</string><string name="dialog_normal_more_button_content">我是普通多按钮dialog</string><string name="dialog_btn_confirm_text">确定</string><string name="dialog_btn_cancel_text">取消</string><string name="dialog_btn_neutral_text">忽略</string><string name="dialog_btn_confirm_hint_text">您点击了确定按钮</string><string name="dialog_btn_cancel_hint_text">您点击了取消按钮</string><string name="dialog_btn_neutral_hint_text">您点击了忽略按钮</string>

1、普通对话框

在实际项目开发中,此类型对话框中用到的地方要比其他类型的对话框多一些。但是考虑UI统一问题,也会很少用。

运行截图:

Android中如何使用系统对话框

代码:

 private void showNormalDialog(){  //创建dialog构造器  AlertDialog.Builder normalDialog = new AlertDialog.Builder(this);  //设置title  normalDialog.setTitle(getString(R.string.dialog_normal_text));  //设置icon  normalDialog.setIcon(R.mipmap.ic_launcher_round);  //设置内容  normalDialog.setMessage(getString(R.string.dialog_normal_content));  //设置按钮  normalDialog.setPositiveButton(getString(R.string.dialog_btn_confirm_text)      , new DialogInterface.OnClickListener() {    @Override    public void onClick(DialogInterface dialog, int which) {      Toast.makeText(DialogActivity.this,getString(R.string.dialog_btn_confirm_hint_text)          ,Toast.LENGTH_SHORT).show();      dialog.dismiss();    }  });  //创建并显示  normalDialog.create().show(); }

系统对话框都是支持链式调用的,举例:

 new AlertDialog.Builder(this)      .setTitle(getString(R.string.dialog_normal_text))      .setIcon(R.mipmap.ic_launcher_round)      .setMessage(getString(R.string.dialog_normal_content))      .setPositiveButton(getString(R.string.dialog_btn_confirm_text)          , new DialogInterface.OnClickListener() {        @Override        public void onClick(DialogInterface dialog, int which) {          Toast.makeText(DialogActivity.this,getString(R.string.dialog_btn_confirm_hint_text)              ,Toast.LENGTH_SHORT).show();          dialog.dismiss();        }      })      .create()      .show();

下面的代码都是可以用链式调用的,这里就不展示了。

2、普通对话框(多按钮)

在系统对话框中最多出现三个按钮,即PositiveButton(确定)、NegativeButton(取消)、NeutralButton(忽略)。

运行截图:

Android中如何使用系统对话框

代码:

 private void showNormalMoreButtonDialog(){  AlertDialog.Builder normalMoreButtonDialog = new AlertDialog.Builder(this);  normalMoreButtonDialog.setTitle(getString(R.string.dialog_normal_more_button_text));  normalMoreButtonDialog.setIcon(R.mipmap.ic_launcher_round);  normalMoreButtonDialog.setMessage(getString(R.string.dialog_normal_more_button_content));  //设置按钮  normalMoreButtonDialog.setPositiveButton(getString(R.string.dialog_btn_confirm_text)      , new DialogInterface.OnClickListener() {        @Override        public void onClick(DialogInterface dialog, int which) {          Toast.makeText(DialogActivity.this              ,getString(R.string.dialog_btn_confirm_hint_text),Toast.LENGTH_SHORT).show();          dialog.dismiss();        }      });  normalMoreButtonDialog.setNegativeButton(getString(R.string.dialog_btn_cancel_text)      , new DialogInterface.OnClickListener() {        @Override        public void onClick(DialogInterface dialog, int which) {          Toast.makeText(DialogActivity.this,              getString(R.string.dialog_btn_cancel_hint_text),Toast.LENGTH_SHORT).show();          dialog.dismiss();        }      });  normalMoreButtonDialog.setNeutralButton(getString(R.string.dialog_btn_neutral_text)      , new DialogInterface.OnClickListener() {        @Override        public void onClick(DialogInterface dialog, int which) {          Toast.makeText(DialogActivity.this,              getString(R.string.dialog_btn_neutral_hint_text),Toast.LENGTH_SHORT).show();          dialog.dismiss();        }      });  normalMoreButtonDialog.create().show(); }

也可以用下面的实现方式,和上面的代码效果是一样的。

 private void showNormalMoreButtonDialog(){  DialogInterface.OnClickListener setListener = null;  AlertDialog.Builder normalMoreButtonDialog = new AlertDialog.Builder(this);  normalMoreButtonDialog.setTitle(getString(R.string.dialog_normal_more_button_text));  normalMoreButtonDialog.setIcon(R.mipmap.ic_launcher_round);  normalMoreButtonDialog.setMessage(getString(R.string.dialog_normal_more_button_content));  setListener = new DialogInterface.OnClickListener() {    @Override    public void onClick(DialogInterface dialog, int which) {      switch (which){        case DialogInterface.BUTTON_POSITIVE:          Toast.makeText(DialogActivity.this,              getString(R.string.dialog_btn_confirm_hint_text),Toast.LENGTH_SHORT).show();          dialog.dismiss();          break;        case DialogInterface.BUTTON_NEUTRAL:          Toast.makeText(DialogActivity.this              ,getString(R.string.dialog_btn_neutral_hint_text),Toast.LENGTH_SHORT).show();          dialog.dismiss();          break;        case DialogInterface.BUTTON_NEGATIVE:          Toast.makeText(DialogActivity.this              ,getString(R.string.dialog_btn_cancel_hint_text),Toast.LENGTH_SHORT).show();          dialog.dismiss();          break;      }    }  };  normalMoreButtonDialog.setPositiveButton(getString(R.string.dialog_btn_confirm_text),setListener);  normalMoreButtonDialog.setNegativeButton(getString(R.string.dialog_btn_cancel_text),setListener);  normalMoreButtonDialog.setNeutralButton(getString(R.string.dialog_btn_neutral_text),setListener);  normalMoreButtonDialog.create().show(); }

3、普通列表对话框

此种类型的对话框能实现简单的列表。

运行截图:

Android中如何使用系统对话框

代码:

  private void showListDialog(){  final String listItems[] = new String[]{"listItems1","listItems2","listItems3",      "listItems4","listItems5","listItems6"};  AlertDialog.Builder listDialog = new AlertDialog.Builder(this);  listDialog.setTitle(getString(R.string.dialog_list_text));  listDialog.setIcon(R.mipmap.ic_launcher_round);    listDialog.setItems(listItems,new DialogInterface.OnClickListener() {    @Override    public void onClick(DialogInterface dialog, int which) {      Toast.makeText(DialogActivity.this,listItems[which],Toast.LENGTH_SHORT).show();    }  });  //设置按钮  listDialog.setPositiveButton(getString(R.string.dialog_btn_confirm_text)      , new DialogInterface.OnClickListener() {        @Override        public void onClick(DialogInterface dialog, int which) {          dialog.dismiss();        }      });  listDialog.create().show(); }

4、单选对话框

运行截图:

Android中如何使用系统对话框

代码:

 private void showRadioDialog(){  final String radioItems[] = new String[]{"radioItem1","radioItem1","radioItem1","radioItem1"};  AlertDialog.Builder radioDialog = new AlertDialog.Builder(this);  radioDialog.setTitle(getString(R.string.dialog_radio_text));  radioDialog.setIcon(R.mipmap.ic_launcher_round);    radioDialog.setSingleChoiceItems(radioItems, 0, new DialogInterface.OnClickListener() {    @Override    public void onClick(DialogInterface dialog, int which) {      Toast.makeText(DialogActivity.this,radioItems[which],Toast.LENGTH_SHORT).show();    }  });  //设置按钮  radioDialog.setPositiveButton(getString(R.string.dialog_btn_confirm_text)      , new DialogInterface.OnClickListener() {        @Override        public void onClick(DialogInterface dialog, int which) {          dialog.dismiss();        }      });  radioDialog.create().show(); }

5、多选对话框

运行截图:

Android中如何使用系统对话框

代码:

private void showCheckBoxDialog(){  final String checkBoxItems[] = new String[]{"checkBoxItems1","checkBoxItems2",      "checkBoxItems3","checkBoxItems4"};  final boolean isCheck[] = new boolean[]{false,true,true,false};  AlertDialog.Builder checkBoxDialog = new AlertDialog.Builder(this);  checkBoxDialog.setTitle(getString(R.string.dialog_check_box_text));  checkBoxDialog.setIcon(R.mipmap.ic_launcher_round);    checkBoxDialog.setMultiChoiceItems(checkBoxItems, isCheck      , new DialogInterface.OnMultiChoiceClickListener() {    @Override    public void onClick(DialogInterface dialog, int which, boolean isChecked) {      if (isChecked){        Toast.makeText(DialogActivity.this,            checkBoxItems[which] + "  选中",Toast.LENGTH_SHORT).show();      }else {        Toast.makeText(DialogActivity.this,            checkBoxItems[which] + "  未选中",Toast.LENGTH_SHORT).show();      }    }  });  //设置按钮  checkBoxDialog.setPositiveButton(getString(R.string.dialog_btn_confirm_text)      , new DialogInterface.OnClickListener() {        @Override        public void onClick(DialogInterface dialog, int which) {          dialog.dismiss();        }      });  checkBoxDialog.create().show(); }

6、带输入框的弹窗

运行截图:

Android中如何使用系统对话框

代码:

private void showEditDialog(){  final EditText edit = new EditText(this);  AlertDialog.Builder editDialog = new AlertDialog.Builder(this);  editDialog.setTitle(getString(R.string.dialog_edit_text));  editDialog.setIcon(R.mipmap.ic_launcher_round);  //设置dialog布局  editDialog.setView(edit);  //设置按钮  editDialog.setPositiveButton(getString(R.string.dialog_btn_confirm_text)      , new DialogInterface.OnClickListener() {        @Override        public void onClick(DialogInterface dialog, int which) {          Toast.makeText(DialogActivity.this,              edit.getText().toString().trim(),Toast.LENGTH_SHORT).show();          dialog.dismiss();        }      });  editDialog.create().show(); }

自定义布局的对话框

此类型的对话框在实际项目开发中用到的地方比提示对话框用到的地方要多一些,不过在项目几乎上都是自定义的对话框...

运行截图:

Android中如何使用系统对话框

布局文件:custom_dialog_layout.xml

  <TextView      android:id="@+id/dialog_text"      android:layout_width="match_parent"      android:layout_height="wrap_content"      android:textSize="15sp"      android:textColor="@color/colorPrimary"      android:gravity="center"      android:padding="12dp"/>   <RelativeLayout      android:layout_width="match_parent"      android:layout_height="wrap_content">      <ImageView        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:src="@mipmap/ic_launcher"/>     <Button       android:id="@+id/dialog_btn_confirm"       android:layout_width="wrap_content"       android:layout_height="wrap_content"       android:textColor="@color/colorAccent"       android:textSize="15sp"       android:text="@string/dialog_btn_confirm_text"       android:layout_centerHorizontal="true"/>     <Button       android:id="@+id/dialog_btn_cancel"       android:layout_width="wrap_content"       android:layout_height="wrap_content"       android:textColor="@color/colorAccent"       android:textSize="15sp"       android:text="@string/dialog_btn_cancel_text"       android:layout_centerHorizontal="true"       android:layout_alignParentRight="true"/>   </RelativeLayout> </LinearLayout>

代码:

 private void showLayoutDialog() {  //加载布局并初始化组件  View dialogView = LayoutInflater.from(this).inflate(R.layout.custom_dialog_layout,null);  TextView dialogText = (TextView) dialogView.findViewById(R.id.dialog_text);  Button dialogBtnConfirm = (Button) dialogView.findViewById(R.id.dialog_btn_confirm);  Button dialogBtnCancel = (Button) dialogView.findViewById(R.id.dialog_btn_cancel);  final AlertDialog.Builder layoutDialog = new AlertDialog.Builder(this);  layoutDialog.setTitle(getString(R.string.dialog_custom_layout_text));  layoutDialog.setIcon(R.mipmap.ic_launcher_round);  layoutDialog.setView(dialogView);  //设置组件  dialogText.setText("我是自定义layout的弹窗!!");  dialogBtnConfirm .setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {      Toast.makeText(DialogActivity.this,"我是自定义layout的弹窗!!",Toast.LENGTH_SHORT).show();    }  });  dialogBtnConfirm .setOnClickListener(new View.OnClickListener() {    @Override    public void onClick(View v) {      layoutDialog.setOnDismissListener(new DialogInterface.OnDismissListener() {        @Override        public void onDismiss(DialogInterface dialog) {          dialog.dismiss();        }      });    }  });  layoutDialog.create().show(); }

看完上述内容,你们掌握Android中如何使用系统对话框的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网行业资讯频道,感谢各位的阅读!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯