zoukankan      html  css  js  c++  java
  • 安卓三种常用的对话框

    在程序设计中,我们经常会用到对话框,这里,我为大家写了三种常见的案例。下面我们看运行截图。

    下面我们直接看代码

    布局文件  activity_main.xml

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:paddingBottom="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:paddingTop="@dimen/activity_vertical_margin"
        tools:context="com.example.diagl.MainActivity" >
    
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="onClick1"
            android:text="确定取消对话框" />
    
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="onClick2"
            android:text="单选对话框" />
    
        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:onClick="onClick3"
            android:text="多选对话框" />
    
    </LinearLayout>

     java文件

    package com.example.diagl;
    
    import android.app.Activity;
    import android.app.AlertDialog;
    import android.app.AlertDialog.Builder;
    import android.content.DialogInterface;
    import android.content.DialogInterface.OnClickListener;
    import android.content.DialogInterface.OnMultiChoiceClickListener;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Toast;
    
    public class MainActivity extends Activity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
    
        // 确认/取消对话框
        public void onClick1(View v) {
    
            // AlertDialog无法通过new创建对象,所以要用其内部类Builder创建
            AlertDialog.Builder builder = new Builder(this);
            // 设置相关属性,图标等不是必须设置的属性
            builder.setIcon(android.R.drawable.alert_light_frame);
            builder.setTitle("对话框标题");
            builder.setMessage("这个是对话框正文");
    
            // 设置确定按钮的文本你和添加监听内容
            builder.setPositiveButton("确定", new OnClickListener() {
    
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    Toast.makeText(MainActivity.this, "点击了确定按钮", 0).show();
                }
            });
    
            // 设置取消按钮的文本和监听内容
            builder.setNegativeButton("取消", new OnClickListener() {
    
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    Toast.makeText(MainActivity.this, "点击了取消按钮", 0).show();
                }
            });
            // 创建器创建对话框
            AlertDialog alertDialog = builder.create();
            alertDialog.show();
            /*
             * 上面语句简写的话,直接builder.show();也是可以得
             */
        }
    
        // 多选对话框
        public void onClick2(View v) {
    
            AlertDialog.Builder aBuilder = new Builder(this);
    
            aBuilder.setTitle("请选择女朋友");
            /*
             * 第一个参数:单选对话框的选项,一般为字符串数组 第二个参数:选择默认选项,-1表示没有默认选项。要选默认选项可以传入字符串数组下标
             * 第三个参数:监听
             */
            final String[] items = { "朱主爱", "新垣结衣", "刘诗诗" };
    
            aBuilder.setSingleChoiceItems(items, -1, new OnClickListener() {
    
                /*
                 * 第一个参数:表示当前对话框 第二个参数:表示用户所选择的选项下标(也就是字符串数组下标)
                 */
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    Toast.makeText(MainActivity.this, "你选择了" + items[which], 0)
                            .show();
                    // 这个是让用户点击后让对话框消失的语句
                    dialog.dismiss();
    
                }
            });
    
            aBuilder.show();
    
        }
    
        // 多选对话框
        public void onClick3(View v) {
    
            AlertDialog.Builder aBuilder = new Builder(this);
            aBuilder.setTitle("请选择女朋友");
            // 选项内容
            final String[] items = { "JoyceChu", "新垣结衣", "Taylor Swift", "赵丽颖",
                    "刘诗诗" };
            // 默认被选中的选项,true为选择,false为没有选择,分别对应内容数组元素
            final boolean[] checkedItems = { true, true, false, false, false };
            /*
             * 第一个参数:字符串数组,要选择的选项 第二个参数:布尔值数组,表示默认被选中的选项
             * 第三个参数:监听,注意用的是OnMultiChoiceClickListener()的监听方法
             */
            aBuilder.setMultiChoiceItems(items, checkedItems,
                    new OnMultiChoiceClickListener() {
    
                        /*
                         * 第一个参数:当前对话框 第二个参数:选择内容的小标 第三个参数:选择中的选项为true,没选择为false
                         */
                        @Override
                        public void onClick(DialogInterface dialog, int which,
                                boolean isChecked) {
                            // TODO Auto-generated method stub
                            checkedItems[which] = isChecked;
                        }
                    });
        
            // 添加确定按钮
            aBuilder.setPositiveButton("确定", new OnClickListener() {
    
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    String textString = "";
                    for (int i = 0; i < checkedItems.length; i++) {
                        if (checkedItems[i]) {
                            textString = textString + items[i] + ",";
                        }
                    }
                    Toast.makeText(MainActivity.this, "你选择了" + textString + "做女朋友", 0)
                            .show();
                    dialog.dismiss();
                }
            });
            aBuilder.show();
    
        }
    
    }
  • 相关阅读:
    GCD 使用说明
    iOS操作系统的层次结构
    Objective-C 类型转换
    UIView和Masonry实现动画效果
    iOS 常用手势
    SDUT 2610 Boring Counting(离散化+主席树区间内的区间求和)
    HDU 4417 Super Mario(主席树求区间内的区间查询+离散化)
    NBUT 1525 Cow Xor(01字典树+前缀思想)
    HDU 4825 Xor Sum(经典01字典树+贪心)
    HDU 1069 Monkey and Banana(二维偏序LIS的应用)
  • 原文地址:https://www.cnblogs.com/linfenghp/p/5406148.html
Copyright © 2011-2022 走看看