android dialog
16lz
2022-01-15
参考于:
Android之Dialog详解
7种形式的Android Dialog使用举例
(一)概述
android中的dialog可以分为5类:一般对话框,列表对话框,单选按钮对话框,多选对话框,自定义对话框。
(二)一般对话框
样式:
20150306140325734[1].png
AlertDialog.Builder builder = new AlertDialog.Builder(this); //先得到构造器 builder.setTitle("提示"); //设置标题 builder.setMessage("是否确认退出"); //设置内容 builder.setIcon(R.mipmap.ic_launcher); //自定义图标 builder.setCancelable(false); //设置是否能点击,对话框的其他区域取消 builder.setPositiveButton("确认", new DialogInterface.OnClickListener() { //设置其确认按钮和监听事件 @Override public void onClick(DialogInterface dialog, int which) { // which,是哪一个按钮被触发 // 其值如下: // Dialog.BUTTON_NEGATIVE 忽略 // Dialog.BUTTON_POSITIVE 确认 // Dialog.BUTTON_NEUTRAL 取消 dialog.dismiss(); } }); builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { //设置其取消按钮和监听事件 @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.setNegativeButton("忽略", new DialogInterface.OnClickListener() { //设置其忽略按钮和监听事件 @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create(); //创建对话框 builder.show(); //显示对话框 }
可以利用Which的值,把以上的代码简化:
private void dialog1_1(){ //先new出一个监听器,设置好监听 DialogInterface.OnClickListener dialogOnclicListener=new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which) { switch(which){ case Dialog.BUTTON_POSITIVE: Toast.makeText(MainActivity.this, "确认" + which, Toast.LENGTH_SHORT).show(); break; case Dialog.BUTTON_NEGATIVE: Toast.makeText(MainActivity.this, "取消" + which, Toast.LENGTH_SHORT).show(); break; case Dialog.BUTTON_NEUTRAL: Toast.makeText(MainActivity.this, "忽略" + which, Toast.LENGTH_SHORT).show(); break; } } }; //dialog参数设置 AlertDialog.Builder builder=new AlertDialog.Builder(this); //先得到构造器 builder.setTitle("提示"); //设置标题 builder.setMessage("是否确认退出?"); //设置内容 builder.setIcon(R.mipmap.ic_launcher);//设置图标,图片id即可 builder.setPositiveButton("确认",dialogOnclicListener); builder.setNegativeButton("取消", dialogOnclicListener); builder.setNeutralButton("忽略", dialogOnclicListener); builder.create().show(); }
(三)列表对话框
样式:
2016-04-18_100530.png final String items[] = {"AAA","BBB","CCC"}; AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("提示"); //设置标题 //builder.setMessage("是否确认退出?"); //设置内容 builder.setIcon(R.mipmap.ic_launcher);//设置图标,图片id即可 //设置列表显示,注意设置了列表显示就不要设置builder.setMessage()了,否则列表不起作用。 builder.setItems(items,new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); Toast.makeText(MainActivity.this, items[which], Toast.LENGTH_SHORT).show(); } }); builder.setPositiveButton("确定",new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); Toast.makeText(MainActivity.this, "确定", Toast.LENGTH_SHORT).show(); } }); builder.create().show();
(四)单选按钮对话框
2016-04-18_101253.png final String items[]={"男","未知","女"}; AlertDialog.Builder builder=new AlertDialog.Builder(this); //先得到构造器 builder.setTitle("提示"); //设置标题 builder.setIcon(R.mipmap.ic_launcher); //设置图标,图片id即可 //设置单选按钮 // items 为列表项 // 0 为默认选中第一个 // 第三个参数是监听器 builder.setSingleChoiceItems(items,0,new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //dialog.dismiss(); Toast.makeText(MainActivity.this, items[which], Toast.LENGTH_SHORT).show(); } }); // 设置监听器 builder.setPositiveButton("确定",new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); Toast.makeText(MainActivity.this, "确定", Toast.LENGTH_SHORT).show(); } }); builder.create().show();
(五)多选按钮对话框
2016-04-18_101741.png final String items[]={"篮球","足球","排球"}; final boolean selected[]={true,false,true}; AlertDialog.Builder builder=new AlertDialog.Builder(this); //先得到构造器 builder.setTitle("提示"); //设置标题 builder.setIcon(R.mipmap.ic_launcher);//设置图标,图片id即可 // 参数一:列表项 // 参数二:默认打勾的 // 参数三:监听器 builder.setMultiChoiceItems(items,selected,new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { // dialog.dismiss(); Toast.makeText(MainActivity.this, items[which]+isChecked, Toast.LENGTH_SHORT).show(); } }); // 确认按钮 builder.setPositiveButton("确定",new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); Toast.makeText(MainActivity.this, "确定", Toast.LENGTH_SHORT).show(); //android会自动根据你选择的改变selected数组的值。 for (int i=0;i
(六)自定义对话框
2016-04-18_103914.pngdialog的布局文件
<?xml version="1.0" encoding="utf-8"?>
代码:
//其实对话框里面很多东西都是可以自定义的 // 1. 图标 // 2. 整个布局 AlertDialog.Builder builder=new AlertDialog.Builder(this); //先得到构造器 builder.setTitle("自定义dialog"); //设置标题 builder.setIcon(R.mipmap.ic_launcher);//设置图标,图片id即可 // 载入布局 LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.dialog_cell,null); builder.setView(layout); // 对布局中的控件监听 EditText editText_name = (EditText) layout.findViewById(R.id.editText_name); EditText editText_password = (EditText) layout.findViewById(R.id.editText_password); editText_name.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainActivity.this,"name is on click",Toast.LENGTH_LONG).show(); } }); // 确认按钮 builder.setPositiveButton("确定",new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); // 显示 builder.create().show();
(七)总结
其实dialog算是挺简单的东西,不过想要驾驭它,不要以为掌握以上的就可以了,你应该完全读透dialog这个控件的源码,并且自己能写出来。虽然说,不建议重复制作轮子,但是,我们必须有造轮子的能力。
以后我会写一篇造dialog轮子的文章,不过不知道是什么时候了。
更多相关文章
- Android之背景图片设置为重复而不是默认的拉伸
- Android(安卓)GridView 通过seletor 设置状态和默认状态
- Android中贪吃蛇游戏的学习(三)
- EditText属性解释
- Android使用ListView使用
- LinearLayout布局之weight
- Android(安卓)Studio 解决方法No JVM installation found. Pleas
- [Android] ImageView.ScaleType设置图解
- 2011.12.05——— android 关于PopUpWindow的setFocusable