我们之前都有经常使用AlertDialog,平时比较常使用的是利用AlertDialog直接创建带按钮的对话框,但是其实AlertDialog非常强大,它不仅可以生成带按钮的提示框,还可以生成带列表的列表对话框,概括起来有以下4种:
①确定、中立和取消等N个按钮的提示对话框,其中的按钮个数不是固定的,可以根据需要添加,例如,不需要中立按钮,则可以生成只带有确定和取消按钮的对话框,也可以是只带一个按钮的对话框。
②带列表的列表对话框。
③带多个单选列表项和N个按钮的列表对话框。
④带多个多选列表项和N个按钮的列表对话框。
接下来来看看效果图:
显示带列表的对话框:
显示带单选项列表的对话框:
显示带多选列表项的对话框:
其中第一种形式只需AlertDialog类即可生成,后面三种需要AlertDialog.Builder类,其提供的常用方法有如下几种:
方法 | 描述 |
|
设置标题 |
|
通过drawable资源对象为对话框设置图标 |
|
通过对资源ID为对话框设置图标 |
|
用于为对话框设置要显示的内容 |
|
用于设置确定按钮 |
|
用于设置取消按钮 |
|
用于设置中立按钮 |
|
为对话框添加列表项 |
|
为对话框添加单选列表项 |
|
为对话框添加多选列表项 |
接下来不多说,直接来个代码来实现看看吧!
package com.example.uidesign; import android.annotation.SuppressLint; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.DialogInterface; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; @SuppressLint("NewApi") public class MainActivity extends Activity { private static final int NOTIFYID_1 = 1; private Button btn1; private Button btn2; private Button btn3; private Button btn4; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); //显示带按钮的对话框 btn1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { AlertDialog alertDialog=new AlertDialog.Builder(MainActivity.this) .create(); alertDialog.setIcon(R.drawable.noti); //设置对话框的图标 alertDialog.setTitle("系统提示:"); //设置对话框的标题 alertDialog.setMessage("带取消、中立、确定按钮的对话框"); //设置要显示的内容 //添加“取消”按钮 alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE , "取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "您单击了取消", Toast.LENGTH_SHORT) .show(); } }); //添加“确定”按钮 alertDialog.setButton(DialogInterface.BUTTON_POSITIVE , "确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "您单击了确定", Toast.LENGTH_SHORT) .show(); } }); //添加“中立”按钮 alertDialog.setButton(DialogInterface.BUTTON_NEUTRAL , "中立", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "您单击了中立按钮", Toast.LENGTH_SHORT) .show(); } }); alertDialog.show(); } }); //显示带列表的对话框 btn2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { final String[] item={"跑步","排球","羽毛球","足球","体操"}; Builder builder=new AlertDialog.Builder(MainActivity.this); builder.setIcon(R.drawable.noti); builder.setTitle("请选择你喜欢的运动"); builder.setItems(item, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "您选择的运动是"+item[which], Toast.LENGTH_SHORT).show(); } }); builder.create().show(); //创建对话框并显示 } }); //显示带单选项列表的对话框 btn3.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { final String[] item={"葡萄干","香蕉干","薯片","柠檬干","话梅"}; Builder builder=new AlertDialog.Builder(MainActivity.this); builder.setIcon(R.drawable.noti); builder.setTitle("请选择你喜欢的运动"); builder.setSingleChoiceItems(item, 0,new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "您选择的零食是"+item[which], Toast.LENGTH_SHORT).show(); } }); builder.setPositiveButton("确定", null); //添加确定按钮 builder.create().show(); //创建对话框并显示 } }); //显示带多选列表项的对话框 btn4.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //记录个列表的状态 final boolean[] checkedItem=new boolean[] {false,true,false,true,false}; //各列表项要显示的内容 final String[] item={"故事书","言情小说","穿越文","校园爱情","古代言情"}; Builder builder=new AlertDialog.Builder(MainActivity.this); builder.setIcon(R.drawable.noti); builder.setTitle("请选择你喜欢的书类型:"); builder.setMultiChoiceItems(item, checkedItem, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { checkedItem[which]=isChecked; } }); //为对话框添加"确定"按钮 builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //用于保存选择按钮 String result=""; for (int i = 0; i < checkedItem.length; i++) { //当选项被选择时 if (checkedItem[i]) { //将选项内容添加到result中去 result+=item[i]+"、"; } } //当resul不为空时,通过消息提示框显示选择的结果 if (!"".equals(result)) { //去掉后面的“、” result=result.substring(0, result.length()-1); Toast.makeText(MainActivity.this, "您选择了【"+result+"]", Toast.LENGTH_SHORT).show(); } } }); builder.create().show(); //创建对话框并显示 } }); } public void init() { btn1=(Button) findViewById(R.id.button1); btn2=(Button) findViewById(R.id.button2); btn3=(Button) findViewById(R.id.button3); btn4=(Button) findViewById(R.id.button4); } }其中的xml代码很简单就不写了。(ps:可能这些很多人写过了,诸位大神们可以忽略不看,我是慢慢学习着来的。)