Android对话框
前几天出差没有进行更新,今天写一下安卓中用的比较多的对话框——AlertDialog。
dialog就是一个在屏幕上弹出一个可以让用户做出一个选择,或者输入额外的信息的对话框,一个对话框并不会沾满我们整个的屏幕,并且通常用于模型事件当中需要用户做出一个决定后才会继续执行。
对于对话框,我们主要用三种,分别是普通对话框、单选对话框、多选对话框。
效果图
对话框没什么难点,直接上代码
1 public class MainActivity extends AppCompatActivity implements View.OnClickListener { 2 3 private Button btn_dialog_one; 4 private Button btn_dialog_three; 5 private Button btn_dialog_four; 6 7 private Context mContext; 8 private boolean[] checkItems; 9 10 private AlertDialog alert = null; 11 private AlertDialog.Builder builder = null; 12 13 @Override 14 protected void onCreate(Bundle savedInstanceState) { 15 super.onCreate(savedInstanceState); 16 setContentView(R.layout.activity_main); 17 mContext = MainActivity.this; 18 bindView(); 19 20 21 } 22 23 private void bindView() { 24 btn_dialog_one = (Button) findViewById(R.id.btn_dialog_one); 25 btn_dialog_three = (Button) findViewById(R.id.btn_dialog_three); 26 btn_dialog_four = (Button) findViewById(R.id.btn_dialog_four); 27 btn_dialog_one.setOnClickListener(this); 28 btn_dialog_three.setOnClickListener(this); 29 btn_dialog_four.setOnClickListener(this); 30 } 31 32 33 @Override 34 public void onClick(View v) { 35 switch (v.getId()) { 36 //普通对话框 37 case R.id.btn_dialog_one: 38 alert = null; 39 builder = new AlertDialog.Builder(mContext); 40 alert = builder.setIcon(R.mipmap.ic_icon_fish) 41 .setTitle("系统提示:") 42 .setMessage("这是一个最普通的AlertDialog,\n带有三个按钮,分别是取消,中立和确定") 43 .setNegativeButton("取消", new DialogInterface.OnClickListener() { 44 @Override 45 public void onClick(DialogInterface dialog, int which) { 46 Toast.makeText(mContext, "你点击了取消按钮~", Toast.LENGTH_SHORT).show(); 47 } 48 }) 49 .setPositiveButton("确定", new DialogInterface.OnClickListener() { 50 @Override 51 public void onClick(DialogInterface dialog, int which) { 52 Toast.makeText(mContext, "你点击了确定按钮~", Toast.LENGTH_SHORT).show(); 53 } 54 }) 55 .setNeutralButton("中立", new DialogInterface.OnClickListener() { 56 @Override 57 public void onClick(DialogInterface dialog, int which) { 58 Toast.makeText(mContext, "你点击了中立按钮~", Toast.LENGTH_SHORT).show(); 59 } 60 }).create(); //创建AlertDialog对象 61 alert.show(); //显示对话框 62 break; 63 //单选列表对话框 64 case R.id.btn_dialog_three: 65 final String[] fruits = new String[]{"苹果", "雪梨", "香蕉", "葡萄", "西瓜"}; 66 alert = null; 67 builder = new AlertDialog.Builder(mContext); 68 alert = builder.setIcon(R.mipmap.ic_icon_fish) 69 .setTitle("选择你喜欢的水果,只能选一个哦~") 70 .setSingleChoiceItems(fruits, 0, new DialogInterface.OnClickListener() { 71 @Override 72 public void onClick(DialogInterface dialog, int which) { 73 Toast.makeText(getApplicationContext(), "你选择了" + fruits[which], Toast.LENGTH_SHORT).show(); 74 } 75 }).create(); 76 alert.show(); 77 break; 78 //多选列表对话框 79 case R.id.btn_dialog_four: 80 final String[] menu = new String[]{"水煮豆腐", "萝卜牛腩", "酱油鸡", "胡椒猪肚鸡"}; 81 //定义一个用来记录个列表项状态的boolean数组 82 checkItems = new boolean[]{ false, false, false, false}; 83 alert = null; 84 builder = new AlertDialog.Builder(mContext); 85 alert = builder.setIcon(R.mipmap.ic_icon_fish) 86 .setMultiChoiceItems(menu, checkItems, new DialogInterface.OnMultiChoiceClickListener() { 87 @Override 88 public void onClick(DialogInterface dialog, int which, boolean isChecked) { 89 checkItems[which] = isChecked; 90 } 91 }) 92 .setPositiveButton("确定", new DialogInterface.OnClickListener() { 93 @Override 94 public void onClick(DialogInterface dialog, int which) { 95 String result = ""; 96 for (int i = 0; i < checkItems.length; i++) { 97 if (checkItems[i]) 98 result += menu[i] + " "; 99 }100 Toast.makeText(getApplicationContext(), "客官你点了:" + result, Toast.LENGTH_SHORT).show();101 }102 })103 .create();104 alert.show();105 break;106 }107 }108 }
布局是界面中加上三个按钮,就不往上贴了。。。。。。
下面是对话框的实现步骤
- 创建AlertDialog.Builder对象;
- 调用setIcon()设置图标,setTitle()或setCustomTitle()设置标题;
- 设置对话框的内容:setMessage()还有其他方法来指定显示的内容;
- 调用setPositive/Negative/NeutralButton()设置:确定,取消,中立按钮;
- 调用create()方法创建这个对象,再调用show()方法将对话框显示出来;