Android开发基础 几种常用对话框的使用

Android开发基础 几种常用对话框的使用

开发步骤如下:(1)布局界面(2)获取按钮,添加事件监听器,实现对话框 。
我采用的是RelativeLayout布局和LinearLayout两个布局,自定义对话框用的是用的是在Layout下创建的LinearLayout布局,其余对话框用的是默认的RelativeLayout布局。
第一步,点击File->New ->New Module,创建一个项目模块,在activity_main.xml目录下,设计五个基本按钮,布局代码如上图所示,可以直接在设计界面用鼠标拖动按钮,移动按钮的位置,代码会自动生成,可以在activity_main.xml目录下修改按钮名称,也可以双击按钮修改。这样按钮的布局便做好了,还是很简单的。

下面我们先看布局文件,RelativeLayout布局,源代码如下,

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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: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.nuist__njupt.dialoddemo.MainActivity">

    <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="20sp"
        android:text="" />

    <View
        android:id="@+id/line"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true" />

    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="确定【取消】对话框"
        android:layout_alignRight="@+id/title"
        android:layout_alignEnd="@+id/title" />

    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="简单列表对话框"
        android:layout_below="@+id/title"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="22dp" />
    <Button
        android:id="@+id/button3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="单选列表对话框"
        android:layout_below="@+id/button2"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
    <Button
        android:id="@+id/button4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="多选列表对话框"
        android:layout_below="@+id/button3"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />
    <Button
        android:id="@+id/button5"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="自定义VIEW对话框"
        android:layout_below="@+id/button4"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />
</RelativeLayout>

下面的是在Layout下创建的LinearLayout布局,在布局文件下布局如下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <EditText
        android:id="@+id/edit_text"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        />
</LinearLayout>

第二步,在MainActivity文件夹下,获取按钮,添加事件监听器并实现对话框 。(注:我的代码呈上,你可以拿去用,如果出现报错,记得点击Alt+Enter会对你有帮助的)
(1)带取消和确定按钮的对话框,源代码如下,把此方法用在注释中说明,其中我设置了图标,如果你不需要,可以把设置图标那行代码去掉,如果需要,则需复制一张名称为apple的图片粘贴到res文件的drawable目录下。

// author Wangguodong
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
      //显示带取消和确定按钮的对话框
        Button button1 = (Button) findViewById(R.id.button1) ;
        button1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                //创建对话框对象,并实例化
                AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this).create();
                alertDialog.setIcon(R.drawable.apple); //引用图标
                alertDialog.setTitle("乔布斯:"); //设置标题
                alertDialog.setMessage("活着就是为了改变世界,难道还有什么其它原因吗?");//设置内容信息
                alertDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "否", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "您单击了否按钮", Toast.LENGTH_SHORT).show();
                    }
                });  //取消按钮
                alertDialog.setButton(DialogInterface.BUTTON_POSITIVE, "是", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "您单击了是按钮", Toast.LENGTH_SHORT).show();
                    }
                });//确定按钮
                alertDialog.show();
            }
        }) ;

(2)简单列表对话框,源代码如下,已在注释中说明,其中我设置了图标,如果你不需要,可以把设置图标那行代码去掉,如果需要,则需复制一张名称为like的图片粘贴到res文件的drawable目录下。

 // 显示列表对话框
        Button button2 = (Button) findViewById(R.id.button2) ;
        button2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
             //带多个列表项的列表对话框
            final String [] s = new String [] {"求知若饥,虚心若愚","或者就是为了改变世界",
                     "当你有使命,它会让你变得更专注","要么出众,要么出局"} ; //数组中存放四个列表项
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this) ; //  创建一个AlertDialog.Builder对象
                builder.setIcon(R.drawable.like) ; //引用图标
                builder.setTitle("请您选择下面四句话中你最喜欢的一句话");
                builder.setItems(s, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "您选择了【" + s[which] + "】", Toast.LENGTH_SHORT).show();
                    }
                }) ;//确定列表项
                builder.create().show() ; //创建并显示对话框
                }
        }) ;

(3)单选列表对话框,源代码如下,已在注释中说明,其中我设置了图标,如果你不需要,可以把设置图标那行代码去掉,如果需要,则需复制一张名称为select的图片粘贴到res文件的drawable目录下。

 //显示单选对话框
        Button button3 = (Button) findViewById(R.id.button3) ;
        button3.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //创建带列表项的对话框
               final String [] s = new String[] {"比尔盖茨","乔布斯","扎克伯格","马云","马化腾"} ;
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this) ; //  创建一个AlertDialog.Builder对象
                builder.setIcon(R.drawable.select) ; //引用图标
                builder.setTitle("您最喜欢下面哪位大佬呢") ;//设置标题
                builder.setSingleChoiceItems(s, 0, new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        Toast.makeText(MainActivity.this, "您选择了【" + s[which] + "】", Toast.LENGTH_SHORT).show();
                    }
                }) ; //添加列表项
                builder.setPositiveButton("确定", null) ; //创建确定按钮,并默认不做处理
                builder.create().show() ;
            }
        }) ;

(4)多选列表对话框,源代码如下,已在注释中说明,其中我设置了图标,如果你不需要,可以把设置图标那行代码去掉,如果需要,则需复制一张名称为eat的图片粘贴到res文件的drawable目录下。

  //显示多选对话框
        Button button4 = (Button) findViewById(R.id.button4) ;
        button4.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            //创建带多选项的对话框
                final boolean [] checkItems = new boolean[]{false,true,false,true,false} ; //记录列表项的状态
               final  String [] s = new String [] {"王者荣耀","和平精英","英雄联盟","穿越火线","地下城与勇士"} ;//显示列表项的内容
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this) ; //  创建一个AlertDialog.Builder对象
                builder.setIcon(R.drawable.eat) ; //引用图标
                builder.setTitle("请您选择你最喜欢的游戏") ;//设置标题
                builder.setMultiChoiceItems(s, checkItems, new DialogInterface.OnMultiChoiceClickListener() {
                    public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                        checkItems[which] = isChecked; //根据列表选项被操作然后改变状态

                    }
                }) ; //添加的列表项
                builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        String result = ""; //用于记录最终的结果
                        for (int i = 0; i < checkItems.length; i++) {
                            if (checkItems[i]) {
                                result += s[i];
                            }
                        }
                        if (!"".equals(result)) { //判断如果选择的值不为空则输出
                            Toast.makeText(MainActivity.this, "您选择了【" + result + "】", Toast.LENGTH_SHORT).show();
                        }
                    }
                }) ; //添加确定按钮
                builder.create().show() ;
            }
        }) ;

(5)自定义对话框,源代码如下,已在注释中说明,其中我设置了图标,如果你不需要,可以把设置图标那行代码去掉,如果需要,则需复制一张名称为girl的图片粘贴到res文件的drawable目录下。

 //显示自定义对话框

        Button button5 = (Button) findViewById(R.id.button5);
        button5.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this) ; //  创建一个AlertDialog.Builder对象
                builder.setIcon(R.drawable.girl) ; //引用图标
                builder.setTitle("自定义的对话框") ;//设置标题
                final View dialogView = LayoutInflater.from(MainActivity.this)
                        .inflate(R.layout.layout,null);
                builder.setView(dialogView) ; //设置视图

                builder.setPositiveButton("确定",
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which) {
                                // 获取EditView中的输入内容
                                EditText edit_text =
                                        (EditText) dialogView.findViewById(R.id.edit_text);
                                Toast.makeText(MainActivity.this,
                                        edit_text.getText().toString(),
                                        Toast.LENGTH_SHORT).show();
                            }
                        });
                builder.show();
            }
        }) ;

最后一步,在模拟器上调试,结果如下图所示。

Android开发基础 几种常用对话框的使用_第1张图片
Android开发基础 几种常用对话框的使用_第2张图片
Android开发基础 几种常用对话框的使用_第3张图片
Android开发基础 几种常用对话框的使用_第4张图片Android开发基础 几种常用对话框的使用_第5张图片Android开发基础 几种常用对话框的使用_第6张图片
纯原创,如果对你有帮助,点个赞再走吧,谢啦!

你可能感兴趣的:(Android开发基础 几种常用对话框的使用)