android的对话框

android中的对话框形式有四种,分别是一般对话框形式,列表对话框形式,单选按钮对话框,多选按钮对话框,下面我一一对他们进行详解。

<一>一般对话框

一般对话框形式如下图:

具体实现代码如下:

 1 new AlertDialog.Builder(this) 2                             .setTitle("删除")//设置标题 3                             .setMessage("确定要删除指定的记录?")//设置提示消息 4                             .setPositiveButton("确定",new DialogInterface.OnClickListener() {//设置确定的按键 5                                 @Override 6                                 public void onClick(DialogInterface dialog, int which) { 7                                     //do something 8                                 } 9                             })10                             .setNegativeButton("取消",new DialogInterface.OnClickListener() {//设置取消按键11                                 @Override12                                 public void onClick(DialogInterface dialog, int which) {13                                     //do something14                                 }15                             })16                             .setNeutralButton("忽略",new DialogInterface.OnClickListener() {//中立的,什么也不错17                                 @Override18                                 public void onClick(DialogInterface dialog, int which) {19                                     //do something20                                 }21                             })22                             .setCancelable(false)//设置按返回键是否响应返回,这是是不响应23                             .show();//显示

设置每一个Button按键时,都会传(CharSequence text, OnClickListener listener)参数,text是按键的文本,listener是一个DialogInterface.OnClickListener(),所以我们要创建这个对象并实现它的点击事件。在点击事件中有一个which参数不知道大家有没有注意,这个which实际上代表的是一个唯一的int型数值。像上面的setPositiveButton中的which代表的是-1,setNegativeButton中的which代表的是-3,setNeutralButton中的which代表的是-2.

所以在这里为了代码的简化,我们不再为每一个Button创建DialogInterface.OnClickListener()对象,而是只创建一个DialogInterface.OnClickListener()对象来分别实现它们的点击事件。具体实现代码如下:

 1 DialogInterface.OnClickListener dialog = new DialogInterface.OnClickListener() { 2                     public void onClick(DialogInterface dialog, int which) { 3                         if(which == DialogInterface.BUTTON_POSITIVE){//确定按键的点击事件 4                             Toast.makeText(MainActivity.this, "ok!", 1).show(); 5                         } 6                         else if(which == DialogInterface.BUTTON_NEGATIVE){//取消按键的点击事件 7                             Toast.makeText(MainActivity.this, "cancel", 1).show(); 8                         } 9                         else if(which == DialogInterface.BUTTON_NEUTRAL){//忽略按键的点击事件10                             Toast.makeText(MainActivity.this, "不知道", 1).show();11                         }12                     }13                 };

1 //对话框2                 new AlertDialog.Builder(this)3                             .setTitle("删除")//设置标题4                             .setMessage("确定要删除指定的记录?")//设置提示消息5                             .setPositiveButton("确定",dialog)6                             .setNegativeButton("取消",dialog)7                             .setNeutralButton("忽略",dialog)8                             .setCancelable(false)//设置按返回键是否响应返回,这是是不响应9                             .show();//显示

<二>列表对话框

懂得了上面的一般对话框的实现,那么下面的三种对话框就很容易实现了。列表对话框的实现效果如下图:

具体实现代码如下:

 1 final String[] names = {"姚明","科比","詹姆斯"};//列表中显示的内容组成的数组 2                 new AlertDialog.Builder(this) 3                                 .setTitle("列表对话框")//对话框标题 4                                 .setItems(names, new DialogInterface.OnClickListener() {//每一条的名称 5                                     public void onClick(DialogInterface dialog, int which) {//响应点击事件 6                                         Toast.makeText(MainActivity.this, names[which], 1).show(); 7                                     } 8                                 }) 9                                 .setPositiveButton("确定", new DialogInterface.OnClickListener() {//响应确定键的点击事件10                                     11                                     @Override12                                     public void onClick(DialogInterface dialog, int which) {13                                         //do something14                                     }15                                 })16                                 .show();

在设置列表显示时我们用到了setItems,在setItems中有(CharSequence[] items, OnClickListener listener)这样的参数,其中第一个参数是列表显示中的每一个条目的名称的数组,第二个是点击一个列表显示条目时的响应事件,所以在这里我们可以事先定义好一个数组来存放要显示的列表名称。这样在用时就方便多了。在条件点击影响事件时我们要实现onclick事件,这里也有一个参数which,它在API中的解释为which The button that was clicked (e.g. DialogInterface.BUTTON1) or the position of the item clicked.它和上面的which一样,也是代表一个唯一的数值。它在这里代表的是自己定义的那个存放列表名称的数组的下标值,因此我们可以通过下标来访问数组中的数值。当然我们也可以在列表对话框中增加button,这样也是可以的,我们当然也可以为这个button做响应事件。这里我就不多说了。

<三>单选按钮对话框

单选按钮对话框的运行效果如下:

具体实现代码如下:

 1 final String[] lang = {"NBA","英超","西甲"} ; 2                 new AlertDialog.Builder(this) 3                 .setTitle("单选按钮对话框")//标题 4                 .setSingleChoiceItems(lang,0,new DialogInterface.OnClickListener() {//设置条目 5                     public void onClick(DialogInterface dialog, int which) {//响应事件 6                         // do something 7                         //关闭对话框 8                         dialog.dismiss(); 9                     }10                 })11                 .setPositiveButton("确定", new DialogInterface.OnClickListener() {12                     13                     @Override14                     public void onClick(DialogInterface dialog, int which) {15                         //do something16                     }17                 })//添加button并响应点击事件18                 .show();

在设置列表显示时我们用到了setSingleChoiceItems,在setSingleChoiceItems中有(CharSequence[] items, int checkedItem,OnClickListener listener)
这样的参数,其中第一个参数是列表显示中的每一个条目的名称的数组,第二个是默认让哪一个条目被选择上,如上面的代码,我让第一条被默认选上,所以我就在checkedItem这个参数这里写上第一条在数组中的下标值0,如果我默认都没被选上,我就在这里写上-1,第三个是点击一个列表显示条目时的响应事件,所以在这里我们可以事先定义好一个数组来存放要显示的列表名称。这样在用时就方便多了。在条件点击影响事件时我们要实现onclick事件,这里也有一个参数which,它在API中的解释为which The button that was clicked (e.g. DialogInterface.BUTTON1) or the position of the item clicked.它和上面的which一样,也是代表一个唯一的数值。它在这里代表的是自己定义的那个存放列表名称的数组的下标值,因此我们可以通过下标来访问数组中的数值。在点击完我们可以设置让这个对话框消失,这里可以用dialog.dismiss();让对话框消失。当然我们也可以在列表对话框中增加button,这样也是可以的,我们当然也可以为这个button做响应事件。这里我就不多说了。

<四>多选按钮对话框

多选按钮对话框的运行效果如下:

 1 final String[] langs = { "NBA", "西甲", "英超" }; 2             final boolean[] selected = new boolean[] { true, false, true };// 一个存放Boolean值的数组 3             new AlertDialog.Builder(this) 4                     .setTitle("多选列表对话框") 5                     // 标题 6                     .setMultiChoiceItems(langs, selected, 7                             new DialogInterface.OnMultiChoiceClickListener() {// 设置多选条目 8                                 public void onClick(DialogInterface dialog,int which, boolean isChecked) { 9                                     // do something10                                 }11                             })12                     .setPositiveButton("确定",13                             new DialogInterface.OnClickListener() {14                                 public void onClick(DialogInterface dialog,15                                         int which) {16                                     // do something17                                 }18                             }).show();

在多选按钮对话框中,我们用setMultiChoiceItems来设置多选按钮,这里setMultiChoiceItems中的参数为(CharSequence[] items, boolean[] checkedItems, OnMultiChoiceClickListener listener),第一个参数为要显示的条目的名称的数组,这里我们用一个String型的数组来存放,第二个是一个默认哪些按钮被选中的Boolean型数组,这里,我让下标为0和为2的条目默认被选中,当然,我们也可以事先定义好一个Boolean型数组。第三个参数就是点击多选按钮条目时的响应事件。在这个onClick事件中,同样有三个参数(DialogInterfacedialog, int which, boolean isChecked),第一个参数代表的是这个对话框,第二个参数代表的是String数组中存放的数值的下标值。第三个参数代表的是Boolean数组中的boolean值。当然我们也可以在列表对话框中增加button,这样也是可以的,我们当然也可以为这个button做响应事件。这里我就不多说了。

以上就是Android中的四种对话框形式,在用的时候我们要学会灵活运用,不要局限于一种特定的形式,我们可以设计自己的对话框。不要被思想所束缚。

2,像列表这种选择项的弹出式对话框,要改变样式一般都采取重写layout方式

今天才了解到 其实可以自定义样式,与大家分享下,其实很简

AlertDialog.Builder builder = new AlertDialog.Builder(new ContextThemeWrapper(this, R.style.AlertDialogCustom));

然后自定义自己的样式就可以了

<?xml version="1.0" encoding="utf-8"?>

<resources>

<style name="AlertDialogCustom" parent="@android:style/AlertDialog">

<item name="android:textColor">#00FF00</item>

<item name="android:typeface">monospace</item>

<item name="android:textSize">10sp</item>

</style>

</resources>

然后是Dialog的样式

<style name="dialog" parent="@android:style/Theme.Dialog">
  <item name="android:windowFrame">@null</item>
  <item name="android:windowIsFloating">true</item>
  <item name="android:windowIsTranslucent">true</item>
  <item name="android:windowNoTitle">true</item>
  <item name="android:background">@android:color/transparent</item>
  <item name="android:windowBackground">@android:color/transparent</item>
  <item name="android:backgroundDimEnabled">true</item>
  <item name="android:backgroundDimAmount">0.6</item>
 </style>

android的对话框

时间: 2024-10-01 03:08:40

android的对话框的相关文章

[Android]关于对话框dialog的一些事

7种形式的Android Dialog使用举例 http://www.oschina.net/question/54100_32486 [Android]关于对话框dialog的一些事,布布扣,bubuko.com

(七)android 通知对话框,并且监听了返回键,当按下返回键也会创建一个对话框

一.activity_main.java中代码   1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="matc

android 时间对话框 TimePickerDialog详细介绍

 个人在做提醒功能的时候用到了TimePickerDialog对话框,查阅了很多技术资料,但是感觉很多东西都说的不是很详细,并且很多地方,都有不完善的地方,比如有弹出对话框得到的不是系统当前的时间,而是一个其他时间的现象,让人很是苦闷.所以在经过几度研究之后,决定把个人对此空间的部分理解拿出来与大家讨论,如有不对之处,敬请谅解,会加以改进. 闲话不多说,直接进入主题: 首先,我们要在程序中声明一个日历的对象,并对其实例化获取日历实例,后面会用到. private Calendar c = C

Android日期对话框NumberPicker的用法教程

NumberPicker是Android3.0之后引入的一个控件,NumberPicker 是用于选择一组预定义好数字的控件.比如时间hour的选择只有0-23有效,则可以通过setMinValue和setMaxValue设定. 使用该控件时需注意他的两个listener和一个formatter:一个listener用于监听当前value的变化:一个listener用于监听该控件的scroll状态:formatter用于格式化显示该控件中的value.下面逐一介绍这几个接口: 1.NumberP

android各种对话框总结笔记

确定取消对话框(带图标) //(上下文,主题) new AlertDialog.Builder(this, AlertDialog.THEME_DEVICE_DEFAULT_LIGHT) .setTitle("标题").setMessage("内容").setIcon(R.drawable.ic_launcher) //响应点击事件 .setPositiveButton("确定", new OnClickListener() { @Overrid

android 自定义对话框

新建一个布局文件 my_dialog.xml <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match

android 普通对话框的显示

*普通提示提示对话框: MainActivity.java: protect void onCreate(Bundle saveInstanceState) { super.onCreate(savedInstance); setContentView(R.layout.activity_main_01);//绑定Activity页面 Button btnNormalDialog = (Button)this.findViewById(R.id.btnHello); btnNormalDialo

android 简单对话框实现

1.实现效果: 原始界面:                                       点击按钮之后,显示对话框                点击对话框后的确定按钮后,显示一段文字             布局文件: <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/a

android 33 对话框控件

对话框控件:最多3个按钮. mainActivity.java package com.sxt.day05_09; import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.os.Bundle; import android.util.Log; import android.view.View; import android