• $Android AlertDialog的各种用法总结


      Refer:http://www.2cto.com/kf/201205/131876.html

      (一)最简单的用法(详见注释)

     1         // 1、创建简单的AlertDialog // AlertDialog的构造方法全部是Protected的,
     2             // 所以不能直接通过new一个AlertDialog来创建出一个AlertDialog; //
     3             // (1)要创建一个AlertDialog,就要用到AlertDialog.Builder
     4             AlertDialog.Builder dialog = new AlertDialog.Builder(this);
     5 
     6             // (2)设置各种属性 // 注:不设置哪项属性,这个属性就默认不会显示出来
     7             dialog.setTitle("这是一个简单的对话框");
     8             dialog.setIcon(R.drawable.dictation2_64);
     9             dialog.setMessage("欢迎使用!");
    10 
    11             // (3)设置dialog可否被取消 
    12             dialog.setCancelable(true);
    13 
    14             // (4)显示出来 
    15             dialog.show();

       效果如下:

     

      (二)带按钮的AlertDialog

     1         // 2、带按钮的AlertDialog
     2             AlertDialog.Builder dialog = new AlertDialog.Builder(this);
     3             dialog.setTitle("确认");
     4             dialog.setIcon(R.drawable.dictation2_64);
     5             dialog.setMessage("确定要删除此项吗?");
     6 
     7             // 设置“确定”按钮,使用DialogInterface.OnClickListener接口参数
     8             dialog.setPositiveButton("确定",
     9                     new DialogInterface.OnClickListener() {
    10 
    11                         @Override
    12                         public void onClick(DialogInterface dialog, int which) {
    13                             Log.d("Dialog", "点击了“确认”按钮");
    14                         }
    15                     });
    16 
    17             // 设置“查看详情”按钮,使用DialogInterface.OnClickListener接口参数
    18             dialog.setNeutralButton("查看详情",
    19                     new DialogInterface.OnClickListener() {
    20 
    21                         @Override
    22                         public void onClick(DialogInterface dialog, int which) {
    23                             Log.d("Dialog", "点击了“查看详情”按钮");
    24                         }
    25                     });
    26 
    27             // 设置“取消”按钮,使用DialogInterface.OnClickListener接口参数
    28             dialog.setNegativeButton("取消",
    29                     new DialogInterface.OnClickListener() {
    30 
    31                         @Override
    32                         public void onClick(DialogInterface dialog, int which) {
    33                             Log.d("Dialog", "点击了“取消”按钮");
    34                         }
    35                     });
    36 
    37             dialog.show();

      效果如下:

     

      (三)类似于ListView的AlertDialog

      用setItems(CharSequence[] items, final OnClickListener listener)方法来实现类似ListView的AlertDialog。

     1         // 3、类似ListView的AlertDialog
     2             AlertDialog.Builder dialog = new AlertDialog.Builder(this);
     3             dialog.setTitle("请选择一项运动");
     4             dialog.setIcon(R.drawable.dictation2_64);
     5             // 设置为false说明当前dialog是不能用返回键取消的
     6             dialog.setCancelable(false);
     7             
     8             // 列表字符串数组
     9             final String[] sportsArray = new String[] { "跑步", "篮球", "游泳",
    10                     "自行车", "羽毛球" };
    11             // 用于在item的点击事件中,记录选择的是哪一项,初始值设为0.这里用final数组只是因为匿名内部类中只能使用外部终态的变量
    12             final int selectedIndex[] = { 0 };
    13 
    14             // 用setItems方法来实现
    15             dialog.setItems(sportsArray, new DialogInterface.OnClickListener() {
    16 
    17                 @Override
    18                 public void onClick(DialogInterface dialog, int which) {
    19                     selectedIndex[0] = which;
    20                     Log.d("Dialog", "选择了:" + sportsArray[selectedIndex[0]]);
    21                 }
    22             });
    23 
    24             dialog.setNegativeButton("取消",
    25                     new DialogInterface.OnClickListener() {
    26 
    27                         @Override
    28                         public void onClick(DialogInterface dialog, int which) {
    29                             Log.d("Dialog", "点击了“取消”按钮");
    30                         }
    31                     });
    32 
    33             dialog.show();

      效果如下:

     

     

      (四)类似RadioButton的AlertDialog

      用setSingleChoiceItems(CharSequence[] items, int checkedItem, final OnClickListener listener)方法来实现类似RadioButton的AlertDialog

      第一个参数是要显示的数据的数组,第二个参数是初始值(初始被选中的item),第三个参数是点击某个item的触发事件

     1         // 4、类似RadioButton的AlertDialog
     2             AlertDialog.Builder dialog = new AlertDialog.Builder(this);
     3             dialog.setTitle("请选择一项运动");
     4             dialog.setIcon(R.drawable.dictation2_64);
     5 
     6             // 列表字符串数组
     7             final String[] sportsArray = new String[] { "跑步", "篮球", "游泳",
     8                     "自行车", "羽毛球" };
     9             // 用于在item的点击事件中,记录选择的是哪一项,初始值设为0.这里用final数组只是因为匿名内部类中只能使用外部终态的变量
    10             final int selectedIndex[] = { 0 };
    11 
    12             // 用setSingleChoiceItems方法来实现
    13             dialog.setSingleChoiceItems(sportsArray, 0,
    14                     new DialogInterface.OnClickListener() {
    15 
    16                         @Override
    17                         public void onClick(DialogInterface dialog, int which) {
    18                             selectedIndex[0] = which;
    19 
    20                         }
    21                     });
    22 
    23             dialog.setPositiveButton("确定",
    24                     new DialogInterface.OnClickListener() {
    25 
    26                         @Override
    27                         public void onClick(DialogInterface dialog, int which) {
    28                             Log.d("Dialog", "选择了:"
    29                                     + sportsArray[selectedIndex[0]]);
    30                         }
    31                     });
    32 
    33             dialog.setNegativeButton("取消",
    34                     new DialogInterface.OnClickListener() {
    35 
    36                         @Override
    37                         public void onClick(DialogInterface dialog, int which) {
    38                             Log.d("Dialog", "点击了“取消”按钮");
    39                         }
    40                     });
    41 
    42             dialog.show();

      效果如下:

     

      (五)类似CheckBox的AlertDialog

      用setMultiChoiceItems(CharSequence[] items, boolean[] checkedItems, final OnMultiChoiceClickListener listener)方法来实现类似CheckBox的AlertDialog
      第一个参数是要显示的数据的数组,第二个参数是选中状态的数组,第三个参数是点击某个item的触发事件

     1         // 5、类似CheckBox的AlertDialog
     2             AlertDialog.Builder dialog = new AlertDialog.Builder(this);
     3             dialog.setTitle("请选择喜欢的运动(可多选)");
     4             dialog.setIcon(R.drawable.dictation2_64);
     5 
     6             // 列表字符串数组
     7             final String[] sportsArray = new String[] { "跑步", "篮球", "游泳",
     8                     "自行车", "羽毛球" };
     9             // 用于在item的点击事件中,记录选择了哪些项.
    10             final boolean[] selectedIndex = { true, true, false, false, false };
    11 
    12             // 用setMultiChoiceItems方法来实现
    13             dialog.setMultiChoiceItems(sportsArray, selectedIndex,
    14                     new DialogInterface.OnMultiChoiceClickListener() {
    15 
    16                         @Override
    17                         public void onClick(DialogInterface dialog, int which,
    18                                 boolean isChecked) {
    19                             selectedIndex[which] = isChecked;
    20                         }
    21                     });
    22 
    23             dialog.setPositiveButton("确定",
    24                     new DialogInterface.OnClickListener() {
    25 
    26                         @Override
    27                         public void onClick(DialogInterface dialog, int which) {
    28                             for (int i = 0; i < selectedIndex.length; i++) {
    29                                 if (selectedIndex[i]) {
    30                                     Log.d("Dialog", "选择了:" + sportsArray[i]);
    31                                 }
    32                             }
    33                         }
    34                     });
    35 
    36             dialog.setNegativeButton("取消",
    37                     new DialogInterface.OnClickListener() {
    38 
    39                         @Override
    40                         public void onClick(DialogInterface dialog, int which) {
    41                             Log.d("Dialog", "点击了“取消”按钮");
    42                         }
    43                     });
    44 
    45             dialog.show();

      效果如下:

      (六)自定义View的AlertDialog

      有时候系统自带的AlertDialog风格不能满足我们的需求,就比如说我们要实现一个Login画面,有用户名和密码,这时我们就要用到自定义View的AlertDialog

      1、先创建自定义登录框的布局文件my_login_view.xml:

     1 <?xml version="1.0" encoding="utf-8"?>
     2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     3     android:layout_width="match_parent"
     4     android:layout_height="match_parent"
     5     android:orientation="vertical" >
     6 
     7     <LinearLayout
     8         android:layout_width="fill_parent"
     9         android:layout_height="wrap_content"
    10         android:gravity="center"
    11         android:padding="5dp" >
    12 
    13         <TextView
    14             android:layout_width="wrap_content"
    15             android:layout_height="wrap_content"
    16             android:text="账号:" />
    17 
    18         <EditText
    19             android:id="@+id/my_login_account_et"
    20             android:layout_width="0dip"
    21             android:layout_height="wrap_content"
    22             android:layout_weight="1" />
    23     </LinearLayout>
    24 
    25     <LinearLayout
    26         android:layout_width="fill_parent"
    27         android:layout_height="wrap_content"
    28         android:gravity="center"
    29         android:padding="5dp" >
    30 
    31         <TextView
    32             android:layout_width="wrap_content"
    33             android:layout_height="wrap_content"
    34             android:text="密码:" />
    35 
    36         <EditText
    37             android:id="@+id/my_login_password_et"
    38             android:layout_width="0dip"
    39             android:layout_height="wrap_content"
    40             android:layout_weight="1"
    41             android:inputType="numberPassword" />
    42     </LinearLayout>
    43 
    44 </LinearLayout>

      2、在Activity的合适地方创建自定义的AlertDialog(比如按钮的点击事件中):

     1         // 6、自定义View的AlertDialog
     2             AlertDialog.Builder dialog = new AlertDialog.Builder(this);
     3             dialog.setTitle("用户登录");
     4 
     5             // 取得自定义View
     6             LayoutInflater layoutInflater = LayoutInflater.from(this);
     7             final View myLoginView = layoutInflater.inflate(
     8                     R.layout.my_login_view, null);
     9             dialog.setView(myLoginView);
    10 
    11             dialog.setPositiveButton("确定",
    12                     new DialogInterface.OnClickListener() {
    13 
    14                         @Override
    15                         public void onClick(DialogInterface dialog, int which) {
    16                             EditText loginAccountEt = (EditText) myLoginView
    17                                     .findViewById(R.id.my_login_account_et);
    18                             EditText loginPasswordEt = (EditText) myLoginView
    19                                     .findViewById(R.id.my_login_password_et);
    20                             Log.d("MyLogin Dialog", "输入的用户名是:"
    21                                     + loginAccountEt.getText().toString());
    22                             Log.d("MyLogin Dialog", "输入的密码是:"
    23                                     + loginPasswordEt.getText().toString());
    24                         }
    25                     });
    26 
    27             dialog.setNegativeButton("取消",
    28                     new DialogInterface.OnClickListener() {
    29 
    30                         @Override
    31                         public void onClick(DialogInterface dialog, int which) {
    32 
    33                         }
    34                     });
    35 
    36             dialog.show();

      效果如下:

     

      点击“确定”按钮后LogCat中的内容:

  • 相关阅读:
    方便操作的命名范围scope
    使用Emmet加速Web前端开发
    Beanstalkd一个高性能分布式内存队列系统
    2000年互联网泡沫
    简单有效的kmp算法
    文本比较算法:计算文本的相似度
    字符串的四则运算
    文本比较算法:Needleman/Wunsch算法
    两则面试题(动态规划)
    文本比较算法:编辑距离
  • 原文地址:https://www.cnblogs.com/jiayongji/p/5371996.html
Copyright © 2020-2023  润新知