Android UI基础之Dialog对话框的使用

来源:互联网 发布:青牛软件手机卡 编辑:程序博客网 时间:2024/06/05 00:52

                        Android UI基础之Dialog对话框的使用

Android开发中,经常会需要在Android界面上弹出一些对话框,比如咨询用户或者让用户选择,这些功能称之为Android Dialog ,在使用Android的过程中,Android Dialog的类型有不同的类型。

一般对话框如下:

 

代码实现如下:

// 创建一个提示对话框的构建器(构造者)
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("提示");
        builder.setMessage("请问你有女朋友吗?");
        builder.setIcon(R.mipmap.ic_launcher);//设置图标
        // 设置一个“正面按钮”
        builder.setPositiveButton("", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "你可以走了!!", Toast.LENGTH_SHORT).show();
            }
        });
// 设置一个反面按钮、
        builder.setNegativeButton("木有", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "欢迎来到单身俱乐部!!", Toast.LENGTH_SHORT).show();
            }
        });
        // 中立的按钮
        builder.setNeutralButton("隐藏对话框", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "有没有不重要!!", Toast.LENGTH_SHORT).show();
            }
        });
        builder.show(); // 为下面两行代码的简写
//        AlertDialog dialog = builder.create();
//        dialog.show();
    }

上面的代码比较繁琐,每一个按钮都得重写事件吗,注意到onClick ()参数中有一个which,因此可以使用switch case 语句,使工作变得简单。

二:列表对话框

效果图如下:

 

实现代码如下:

public void dialog_click2(View view) {
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setTitle("请选择一个平台使用:");
    final String[] items = {"Android", "iOS", "Windows Phone"};
    //  设置选项
    builder.setItems(items, new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            Toast.makeText(MainActivity.this, items[which], Toast.LENGTH_SHORT).show();
        }
    });
    builder.show();
}

三:单选按钮对话框:

 

代码实现如下:

   String result = "Android";
    public void dialog_click4(View view) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("请选择一个平台使用:");

        final ArrayList<String> list = new ArrayList<>();//存放选择的列表项
        final String[] items = {"Android", "iOS", "Windows Phone"};
        builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                result = items[which];
                Toast.makeText(MainActivity.this, "你选择的是" + items[which], Toast.LENGTH_SHORT).show();
            }
        });
        // 设置一个“正面按钮”
        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show();
                dialog.dismiss();//关掉对话框
            }
        });
// 设置一个反面按钮、
        builder.setNegativeButton("Cancle", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                list.clear();
                dialog.dismiss();
            }
        });
        builder.show();
    }

 

四:多选列表对话框:


public void dialog_click3(View view) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("请选择一个平台使用:");
        final ArrayList<String> list = new ArrayList<>();//存放选择的列表项
        final String[] items = {"Android", "iOS", "Windows Phone"};
        builder.setMultiChoiceItems(items, null, new DialogInterface.OnMultiChoiceClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                if (isChecked) {
                    list.add(items[which]);
                } else {
                    list.remove(items[which]);
                }

            }
        });
        // 设置一个“正面按钮”
        builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, list.toString(), Toast.LENGTH_SHORT).show();
                dialog.dismiss();//关掉对话框
            }
        });
// 设置一个反面按钮、
        builder.setNegativeButton("Cancle", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                list.clear();
                dialog.dismiss();
            }
        });
        builder.show();
    }

五:自定义对话框 (登录对话框)

 

对于自定义的对话框,应该添加中间的布局,分别用来显示用户名,与用户密码。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="@dimen/activity_horizontal_margin">

    <EditText
        android:id="@+id/username"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="userName"
        android:inputType="textPersonName" />
    <EditText
        android:id="@+id/password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="passWord"
        android:inputType="textPassword" />
</LinearLayout>

MiainActivity中代码如下:

public void dialog_click5(View view) {
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setTitle("登录对话框");
        builder.setIcon(R.mipmap.ic_launcher);
        //将布局添加到对话框中 (API 21支持 builder.setView(R.layout.login_layout);
        // 或者如下:
        // 实例化布局文件 (把一个布局文件转换成view对象)
        final View v = getLayoutInflater().inflate(R.layout.login_layout, null);
        builder.setView(v);
        builder.setPositiveButton("确认", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // 获取组件的内容
                EditText t = (EditText) v.findViewById(R.id.username);
                EditText p = (EditText) v.findViewById(R.id.password);
                String user_name = t.getText().toString();
                String pass_word = p.getText().toString();

                Toast.makeText(MainActivity.this, user_name +"---"+pass_word, Toast.LENGTH_SHORT).show();
                dialog.dismiss();//关掉对话框
            }
        });
// 设置一个反面按钮、
        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {

                dialog.dismiss();
            }
        });
        builder.show();// 显示对话框
    }

 

 

 

 

 

 

 

 

 

 

0 0
原创粉丝点击