Android提示框Dialog

转载请标明出处:http://blog.csdn.net/wu_wxc/article/details/49253449
本文出自【吴孝城的CSDN博客】

安卓中的提示框无非七种

下面是七种提示框的代码和效果图

两个选项的代码

Android提示框Dialog_第1张图片

//两个选项的点击功能的实现
    //在不同版本中显示会有所不同,貌似从4.0开始,正的在右边。就是说确定按钮在右边
    protected void one() {
        AlertDialog.Builder builder = new Builder(MainActivity.this);
        builder.setIcon(R.mipmap.hhhh);
        builder.setTitle("两个选项");
        builder.setMessage("关闭和取消");

        builder.setNegativeButton("关闭", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                MainActivity.this.finish();
            }
        });
        builder.setPositiveButton("取消", qxx);    //点击取消按钮后执行qxx方法
        builder.create().show();        //让对话框显示出来
    }


三个选项的代码

Android提示框Dialog_第2张图片

//三个选项的实现
    //在不同版本中显示会有所不同,貌似从4.0开始,正的在右边。就是说确定按钮在右边
    protected void two() {
        Dialog dialog = new AlertDialog.Builder(this).setIcon(
                R.mipmap.hhhh).setTitle("三个选项").setMessage(
                "选择一个").setPositiveButton("第一", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "你选择了第一相", Toast.LENGTH_LONG).show();
            }
        }).setNegativeButton("第二个", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "你选择了第二个", Toast.LENGTH_LONG).show();
            }
        }).setNeutralButton("第三个", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "你选择了第三个", Toast.LENGTH_LONG).show();
            }
        }).create();
        dialog.show();
    }


带输入框的代码

Android提示框Dialog_第3张图片

//带输入框的提示框
    protected void three() {
        AlertDialog dialog = new AlertDialog.Builder(this).create();
        dialog.setIcon(R.mipmap.hhhh);
        dialog.setTitle("提示内容");
        dialog.setMessage("输入内容");
        final EditText et = new EditText(this);
        dialog.setView(et);
        //确定
        DialogInterface.OnClickListener ls = new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "你输入的内容是" + et.getText(), Toast.LENGTH_SHORT).show();
            }
        };
        dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定", ls);
        dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", qxx);
        dialog.show();
    }


列表框代码

Android提示框Dialog_第4张图片

//列表框
    //列表框不能设置setMessage(),不然不会显示列表内容
    protected void four() {
        final String[] select = new String[]{"第一项", "第二项", "第三项", "第四项"};

        Dialog alertDialog = new AlertDialog.Builder(this)
                .setIcon(R.mipmap.hhhh)
                .setTitle("选择一项")
                .setItems(select, new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "你选择了" + select[which], Toast.LENGTH_SHORT).show();
                    }
                }).
                        setNegativeButton("取消", qxx).create();    //点击取消按钮后执行qxx方法
        alertDialog.show();

    }


单选框代码

Android提示框Dialog_第5张图片

//单选框
    //列表框不能设置setMessage(),不然不会显示单选内容
    protected void five() {

        final String[] selects = new String[]{"选项一", "选项二", "选项三", "选项四"};
        new AlertDialog.Builder(this).setIcon(R.mipmap.hhhh)
                .setTitle("单选框")
                        //-1代表默认没选,0代表默认选择第一个
                .setSingleChoiceItems(selects, -1, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        bs = which;
                    }
                }).setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "你选择了" + selects[bs], Toast.LENGTH_SHORT).show();
            }
        }).setNegativeButton("取消", qxx).create().show();    //点击取消按钮后执行qxx方法
    }


复选框代码

Android提示框Dialog_第6张图片

//复选框
    //列表框不能设置setMessage(),不然不会显示多选内容
    protected void six() {
        final String item[] = new String[]{"第一个选项", "第二个选项", "第三个选项", "第四个选项"};
        final boolean bselect[] = new boolean[item.length];
        DialogInterface.OnMultiChoiceClickListener sl = new DialogInterface.OnMultiChoiceClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                //用数组记录下选择的所有项
                bselect[which] = isChecked;
            }
        };
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMultiChoiceItems(item, null, sl);
        /*
        * builder.setMultiChoiceItems(item, null, sl)是一个多选,
        * 如果默认不选的话,直接设置为null,如果默认有选择的话
        * 用new boolean[] {false,true,false,true}
        * 其中true为选择,false为不选
        * 而且只能是boolean[]
        * 不能是Boolean[]*/

        //点击确定后执行的内容
        DialogInterface.OnClickListener ls = new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                String str = "你选择了:";
                for (int i = 0; i < bselect.length; i++) {
                    if (bselect[i]) {
                        str = str + "\n" + item[i];
                    }
                }
                Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
            }
        };

        //点击确定按钮执行ls方法
        builder.setPositiveButton("确定", ls);
        //点击取消按钮执行qxx方法
        builder.setNegativeButton("取消", qxx);

        AlertDialog dialog = builder.create();
        dialog.setIcon(R.mipmap.hhhh);
        dialog.setTitle("复选框");

        dialog.show();
    }


自定义提示框的代码(一)

Android提示框Dialog_第7张图片

//自定义对话框
    protected void seven() {
        LayoutInflater inflater = getLayoutInflater();
        View layout = inflater.inflate(R.layout.custom, null);
        AlertDialog dialog = new AlertDialog.Builder(this).create();
        /*想完全自定义的话,这部分内容可不设置
        dialog.setIcon(R.mipmap.hhhh);
        dialog.setTitle("自定义而已");
        dialog.setMessage("输入帐户和密码");*/
        dialog.setView(layout);
        //点击确定后执行的内容
        DialogInterface.OnClickListener ls = new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "确定提示", Toast.LENGTH_SHORT).show();
            }
        };
        //设置两个按钮
        dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定", ls);
        dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", qxx);

        dialog.show();
    }

自定义提示框的代码(二)

Android提示框Dialog_第8张图片

	private void custom() {
		new AlertDialog.Builder(this)
		.setIcon(R.drawable.hhhh)
		.setTitle("菜单")
		.setItems(new String[] { "一", "二", "三" }, 
				new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
				switch (which) {
				case 0:
					Toast.makeText(MainActivity.this, "一", Toast.LENGTH_SHORT).show();
					break;
				case 1:
					Toast.makeText(MainActivity.this, "二", Toast.LENGTH_SHORT).show();
					break;
				case 2:
					Toast.makeText(MainActivity.this, "三", Toast.LENGTH_SHORT).show();
					break;
				}
			}
		}).show();
	}




下面是完整代码

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center_horizontal">

    <Button
        android:id="@+id/one"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="两个选项"/>
    <Button
        android:id="@+id/two"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="三个选项"/>
    <Button
        android:id="@+id/three"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="输入框"/>
    <Button
        android:id="@+id/four"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="例表"/>
    <Button
        android:id="@+id/five"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="单选"/>
    <Button
        android:id="@+id/six"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="多选"/>
    <Button
        android:id="@+id/seven"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="自定义"/>

</LinearLayout>

自定义提示框的布局代码

custom.xml

<?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:gravity="center">
    <ImageView
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:src="@mipmap/hhhh"/>
    <View
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="#22B8DD"/>

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="帐户:"
            android:textSize="28sp"/>
        <EditText
            android:id="@+id/name"
            android:layout_width="180dp"
            android:layout_height="wrap_content" />
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content">
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="密码:"
            android:textSize="28sp"/>
        <EditText
            android:id="@+id/password"
            android:layout_width="180dp"
            android:inputType="textPassword"
            android:layout_height="wrap_content" />
    </LinearLayout>

</LinearLayout>

Java代码如下

MainActivity.java

package cn.wuxiaocheng.dialog;

import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.content.DialogInterface;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;


public class MainActivity extends AppCompatActivity {


    private int bs = 0;     //单选


    //用数组定义七个按钮
    private int[] button = {R.id.one, R.id.two, R.id.three, R.id.four, R.id.five, R.id.six, R.id.seven};
    private Button[] buttons = new Button[button.length];

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        //数组找到按钮和设置监听
        ChooseBtn btn = new ChooseBtn();
        for (int i = 0; i < button.length; i++) {
            buttons[i] = (Button) findViewById(button[i]);
            buttons[i].setOnClickListener(btn);
        }
    }


    //内部类对按钮点击事件
    class ChooseBtn implements OnClickListener {

        @Override
        public void onClick(View v) {
            switch (v.getId()) {
                case R.id.one:
                    one();
                    break;
                case R.id.two:
                    two();
                    break;
                case R.id.three:
                    three();
                    break;
                case R.id.four:
                    four();
                    break;
                case R.id.five:
                    five();
                    break;
                case R.id.six:
                    six();
                    break;
                case R.id.seven:
                    seven();
                    break;
            }
        }

    }


    //两个选项的点击功能的实现
    //在不同版本中显示会有所不同,貌似从4.0开始,正的在右边。就是说确定按钮在右边
    protected void one() {
        AlertDialog.Builder builder = new Builder(MainActivity.this);
        builder.setIcon(R.mipmap.hhhh);
        builder.setTitle("两个选项");
        builder.setMessage("关闭和取消");

        builder.setNegativeButton("关闭", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                MainActivity.this.finish();
            }
        });
        builder.setPositiveButton("取消", qxx);    //点击取消按钮后执行qxx方法
        builder.create().show();        //让对话框显示出来
    }


    //三个选项的实现
    //在不同版本中显示会有所不同,貌似从4.0开始,正的在右边。就是说确定按钮在右边
    protected void two() {
        Dialog dialog = new AlertDialog.Builder(this).setIcon(
                R.mipmap.hhhh).setTitle("三个选项").setMessage(
                "选择一个").setPositiveButton("第一", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "你选择了第一相", Toast.LENGTH_LONG).show();
            }
        }).setNegativeButton("第二个", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "你选择了第二个", Toast.LENGTH_LONG).show();
            }
        }).setNeutralButton("第三个", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "你选择了第三个", Toast.LENGTH_LONG).show();
            }
        }).create();
        dialog.show();
    }


    //带输入框的提示框
    protected void three() {
        AlertDialog dialog = new AlertDialog.Builder(this).create();
        dialog.setIcon(R.mipmap.hhhh);
        dialog.setTitle("提示内容");
        dialog.setMessage("输入内容");
        final EditText et = new EditText(this);
        dialog.setView(et);
        //确定
        DialogInterface.OnClickListener ls = new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                //.toString()是把输入的内容转化为字符串,.trim()是将字符串头部和尾部的空白去掉
                Toast.makeText(MainActivity.this, "你输入的内容是" + et.getText().toString().trim(), Toast.LENGTH_SHORT).show();
            }
        };
        dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定", ls);
        dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", qxx);
        dialog.show();
    }


    //列表框
    //列表框不能设置setMessage(),不然不会显示列表内容
    protected void four() {
        final String[] select = new String[]{"第一项", "第二项", "第三项", "第四项"};

        Dialog alertDialog = new AlertDialog.Builder(this)
                .setIcon(R.mipmap.hhhh)
                .setTitle("选择一项")
                .setItems(select, new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "你选择了" + select[which], Toast.LENGTH_SHORT).show();
                    }
                }).
                        setNegativeButton("取消", qxx).create();    //点击取消按钮后执行qxx方法
        alertDialog.show();

    }


    //单选框
    //列表框不能设置setMessage(),不然不会显示单选内容
    protected void five() {

        final String[] selects = new String[]{"选项一", "选项二", "选项三", "选项四"};
        new AlertDialog.Builder(this).setIcon(R.mipmap.hhhh)
                .setTitle("单选框")
                        //-1代表默认没选,0代表默认选择第一个
                .setSingleChoiceItems(selects, -1, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        bs = which;
                    }
                }).setPositiveButton("确定", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "你选择了" + selects[bs], Toast.LENGTH_SHORT).show();
            }
        }).setNegativeButton("取消", qxx).create().show();    //点击取消按钮后执行qxx方法

    }


    //复选框
    //列表框不能设置setMessage(),不然不会显示多选内容
    protected void six() {
        final String item[] = new String[]{"第一个选项", "第二个选项", "第三个选项", "第四个选项"};
        final boolean bselect[] = new boolean[item.length];
        DialogInterface.OnMultiChoiceClickListener sl = new DialogInterface.OnMultiChoiceClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                //用数组记录下选择的所有项
                bselect[which] = isChecked;
            }
        };
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setMultiChoiceItems(item, null, sl);
        /*
        * builder.setMultiChoiceItems(item, null, sl)是一个多选,
        * 如果默认不选的话,直接设置为null,如果默认有选择的话
        * 用new boolean[] {false,true,false,true}
        * 其中true为选择,false为不选
        * 而且只能是boolean[]
        * 不能是Boolean[]*/

        //点击确定后执行的内容
        DialogInterface.OnClickListener ls = new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                String str = "你选择了:";
                for (int i = 0; i < bselect.length; i++) {
                    if (bselect[i]) {
                        str = str + "\n" + item[i];
                    }
                }
                Toast.makeText(MainActivity.this, str, Toast.LENGTH_SHORT).show();
            }
        };

        //点击确定按钮执行ls方法
        builder.setPositiveButton("确定", ls);
        //点击取消按钮执行qxx方法
        builder.setNegativeButton("取消", qxx);

        AlertDialog dialog = builder.create();
        dialog.setIcon(R.mipmap.hhhh);
        dialog.setTitle("复选框");

        dialog.show();
    }


    //自定义对话框
    protected void seven() {
        //布局解析器
        LayoutInflater inflater = getLayoutInflater();
        //用布解析器拿到布局
        View layout = inflater.inflate(R.layout.custom, null);
        AlertDialog dialog = new AlertDialog.Builder(this).create();
        /*想完全自定义的话,这部分内容可不设置
        dialog.setIcon(R.mipmap.hhhh);
        dialog.setTitle("自定义而已");
        dialog.setMessage("输入帐户和密码");*/
        dialog.setView(layout);
        //点击确定后执行的内容
        DialogInterface.OnClickListener ls = new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(MainActivity.this, "确定提示", Toast.LENGTH_SHORT).show();
            }
        };
        //设置两个按钮
        dialog.setButton(DialogInterface.BUTTON_POSITIVE, "确定", ls);
        dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", qxx);

        dialog.show();
    }


    //为提高代码复用性,所有取消按钮执行的方法都在这里,当点击取消按钮时,关闭提示框
    DialogInterface.OnClickListener qxx = new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.dismiss();
        }
    };

}





源码下载





你可能感兴趣的:(dialog,android提示框)