

























在Android开发中,我们经常会需要在Android界面上弹出一些对话框,比如询问用户或者让用户选择。这些功能我们叫它Android Dialog对话框,在我们使用Android的过程中,我归纳了一下,Android Dialog的类型无非也就7种,下面我分别向大家介绍这7种Android Dialog对话框的使用方法,希望对大家能有所帮助。
1.该效果是当按返回按钮时弹出一个提示,来确保无误操作,采用常见的对话框样式。
创建dialog对话框方法代码如下:
protected void dialog() { AlertDialog.Builder builder = new Builder(Main.this); builder.setMessage("确认退出吗?"); builder.setTitle("提示"); builder.setPositiveButton("确认", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); Main.this.finish(); } }); builder.setNegativeButton("取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.create().show(); }
在onKeyDown(int keyCode, KeyEvent event)方法中调用此方法
public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { dialog(); } return false; }
2.改变了对话框的图表,添加了三个按钮
创建dialog的方法代码如下:
Dialog dialog = new AlertDialog.Builder(this).setIcon( android.R.drawable.btn_star).setTitle("喜好调查").setMessage( "你喜欢李连杰的电影吗?").setPositiveButton("很喜欢", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Toast.makeText(Main.this, "我很喜欢他的电影。", Toast.LENGTH_LONG).show(); } }).setNegativeButton("不喜欢", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Toast.makeText(Main.this, "我不喜欢他的电影。", Toast.LENGTH_LONG) .show(); } }).setNeutralButton("一般", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub Toast.makeText(Main.this, "谈不上喜欢不喜欢。", Toast.LENGTH_LONG) .show(); } }).create(); dialog.show();
3.信息内容是一个简单的View类型
创建dialog方法的代码如下:
new AlertDialog.Builder(this).setTitle("请输入").setIcon( android.R.drawable.ic_dialog_info).setView( new EditText(this)).setPositiveButton("确定", null) .setNegativeButton("取消", null).show();
4.信息内容是一组单选框
创建dialog方法的代码如下:
new AlertDialog.Builder(this).setTitle("复选框").setMultiChoiceItems( new String[] { "Item1", "Item2" }, null, null) .setPositiveButton("确定", null) .setNegativeButton("取消", null).show();
5.信息内容是一组多选框
创建dialog方法的代码如下:
new AlertDialog.Builder(this).setTitle("单选框").setIcon( android.R.drawable.ic_dialog_info).setSingleChoiceItems( new String[] { "Item1", "Item2" }, 0, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }).setNegativeButton("取消", null).show();
6.信息内容是一组简单列表项
创建dialog的方法代码如下:
new AlertDialog.Builder(this).setTitle("列表框").setItems( new String[] { "Item1", "Item2" }, null).setNegativeButton( "确定", null).show();
7.信息内容是一个自定义的布局
dialog布局文件代码如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_height="wrap_content" android:layout_width="wrap_content" android:background="#ffffffff" android:orientation="horizontal" android:id="@+id/dialog"> <TextView android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/tvname" android:text="姓名:" /> <EditText android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/etname" android:minWidth="100dip"/> LinearLayout>
创建dialog方法的代码如下:
LayoutInflater inflater = getLayoutInflater(); View layout = inflater.inflate(R.layout.dialog, (ViewGroup) findViewById(R.id.dialog)); new AlertDialog.Builder(this).setTitle("自定义布局").setView(layout) .setPositiveButton("确定", null) .setNegativeButton("取消", null).show();
以上就是Android dialog对话框的使用方法,如有帮到你,那就收藏一下!
微信公众号:zwtgla
内容:【技巧窝】主要给大家介绍电影、编程知识,办公office使用技术等共享内容,如你喜欢内容,可以推荐给我们,或是推荐公众号给你的朋友喔!
在线购物网址:http://www.ywc0.com
在线电影网址:http://www.dy669.cn
点击阅读原文~领优惠券
前两天在修改项目代码中的一个问题时,老大提出了一个新的需求,就是在数据库的操作前检测一下数据库中的数据是否符合某种条件,如果符合弹出Confirm对话框,如果操作者确认的话点击OK继续执行,点击取消的话则后面的操作不执行。这个问题让我想了好久,在网上找了很多,最终用两个Button来实现这个功能 。一个按钮是不显示在页面上的,该按钮的单击事件里就写单击Confirm确认以后要执行的代码,而显示的那个按钮的事件代码只写到弹出Confirm那里。最终效果是实现了,但是这个方法有个缺点,就是每当你单击按钮的时候,这个单击事件一定要先走一遍,把后台的脚本注册一次。if (!IsPostBack)
...{
//将按钮的属性设置为不显示,如果隐藏就会出错,HTML解析不到这个控件,事件也会不执行
Button2.Attributes.Add("style", "display:none");
}
protected void Button1_Click(object sender, EventArgs e)
...{
//假设条件
if (this.TextBox1.Text == "ww")
...{
//注册脚本
Page.ClientScript.RegisterStartupScript(this.GetType(), "test", "<script language=javascript>if(confirm('wwwww'==true))document.all.Button2.click();</script>");
}
}
//确认后执行的事件
protected void Button2_Click(object sender, EventArgs e)
...{
Response.Write("This is test");
}
转载于:https://www.cnblogs.com/chencaixia/archive/2007/12/10/989487.html
Android—3分钟你也能学会AlertDialog对话框
在Android开发中,少不了AlertDialog对话框的使用,也是至关重要的一个功能。
AlertDialog的构造方法被声明为protected,所以我们不能使用new来创建AlertDialog对象。
确定取消对话框
DialogInterface.BUTTON_NEGATIVE 设立为取消按钮
DialogInterface.BUTTON_NEUTRAL 设立为确定按钮
DialogInterface.BUTTON_POSITIVE 设立为中立按钮
/******** 取消、确认按钮对话框*********/ button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { AlertDialog alertDialog = new AlertDialog.Builder(AlertDialog_1.this).create(); //创建对象 alertDialog.setTitle("标题区"); alertDialog.setMessage("内容区"); alertDialog.setIcon(R.drawable.ic_launcher_foreground); //图片区 alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE,"取消", new DialogInterface.OnClickListener() { //DialogInterface.BUTTON_NEGATIVE 设立为取消按钮 @Override //并对其设置点击监听 public void onClick(DialogInterface dialog, int which) { Toast.makeText(AlertDialog_1.this,"您点击了否按钮",Toast.LENGTH_LONG).show(); } }); alertDialog.setButton(DialogInterface.BUTTON_NEUTRAL,"确定", new DialogInterface.OnClickListener() { //DialogInterface.BUTTON_NEUTRAL 设立为确定按钮 @Override //并对其设置点击监听 public void onClick(DialogInterface dialog, int which) { Toast.makeText(AlertDialog_1.this,"您点击了确定按钮",Toast.LENGTH_LONG).show(); } }); alertDialog.show(); //显示对话框 } });
带列表的对话框
/*****************列表对话框************************/ button2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final String subject[]=new String[]{"语文","数学","英语"}; AlertDialog.Builder builder =new AlertDialog.Builder(AlertDialog_1.this); builder.setIcon(R.drawable.ic_launcher_foreground); builder.setTitle("选择你喜欢的科目:"); builder.setItems(subject, new DialogInterface.OnClickListener() { //设置监听 @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(AlertDialog_1.this,"您选择了"+subject[which],Toast.LENGTH_LONG).show(); } }); builder.create().show(); //创建、显示对话框 } });
单选列表对话框
/*****************单选列表对话框************************/ button3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final String subject[]=new String[]{"语文","数学","英语"}; AlertDialog.Builder builder =new AlertDialog.Builder(AlertDialog_1.this); builder.setIcon(R.drawable.ic_launcher_foreground); builder.setTitle("选择你喜欢的科目:"); builder.setSingleChoiceItems(subject, 0,new DialogInterface.OnClickListener() { //默认选择0 @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(AlertDialog_1.this,"您选择了"+subject[which],Toast.LENGTH_LONG).show(); } }); builder.setPositiveButton("确定",null); //添加最后的确定按钮,暂不设置监听 builder.create().show(); } });
多选列表对话框
/*****************多选列表对话框************************/ button4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { final String subject[]=new String[]{"语文","数学","英语"}; final boolean bool[]=new boolean[]{true,false,false}; //为word设置选中状态 AlertDialog.Builder builder =new AlertDialog.Builder(AlertDialog_1.this); builder.setIcon(R.drawable.ic_launcher_foreground); builder.setTitle("选择你喜欢的科目:"); builder.setMultiChoiceItems(subject, bool, new DialogInterface.OnMultiChoiceClickListener() { @Override public void onClick(DialogInterface dialog, int which, boolean isChecked) { bool[which]=isChecked; //改变列表项的状态 } }); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { String str=""; for (int i=0;i<bool.length;i++){ if (bool[i]) str=str+" "+subject[i]; } if(!str.equals("")) Toast.makeText(AlertDialog_1.this,str,Toast.LENGTH_LONG).show(); } }); builder.create().show(); } }); } }
今天项目中有用到Alert Dialog,然后是设置密码进入界面,设置密码界面有两个dialog,在第一个dialog需要判断密码是否正确,然后在进行下一步,但是每次在点击确定按钮或者取消按钮,dialog都会直接关闭,如果你写dismiss,或者return等等都是没有用的,所以今天我们只需要添加几句代码就可以实现关闭或不关闭的功能啦。
不关闭dialog:
try {
Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
field.setAccessible(true);
***field.set(dialog, false);***
} catch (Exception e) {
e.printStackTrace();
}
关闭dialog:
try {
Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
field.setAccessible(true);
***field.set(dialog, **true**);***
} catch (Exception e) {
e.printStackTrace();
}
具体代码用法:
AlertDialog.Builder ab=new AlertDialog.Builder(this);
ab.setTitle("Title");
ab.setView(edit);
ab.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int arg1) {
if (edit.getText().toString().length()==0) {
***try {
Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
field.setAccessible(true);
field.set(dialog, **false**);
} catch (Exception e) {
e.printStackTrace();
}***
}
}
}).show();
field.set(dialog, false);//这句代码这只成false表示不关闭dialog;true表示关闭dialog
具体的还可以参考下面的这篇文章哦,分享给大家!
http://longshuai2007.blog.163.com/blog/static/14209441420111130104435932/