Android实现对话框控件Dialog

学习Android三四天了,今天给大家分享一下我的dialog对话空间的实现。想实现四种形式,如下图所示。
这里写图片描述

这里写图片描述
上面是第一个按钮实现的单选对话框,那么如何实现全部功能呢。
首先需要在布局文件(activity_main.xml)中添加布局,代码如下:

<?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">

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:text="@string/hello_world" />
    <!-- 单选对话框 -->
    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/text"
        android:text="@string/dialog"/>
    <!-- 多选对话框 -->
    <Button
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/button"
        android:text="@string/dialogs"/>
    <!-- 按键选择对话框 -->
    <Button
        android:id="@+id/button3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/button2"
        android:text="@string/paly_button"/>
    <!-- 三个按键选择对话框 -->

    <Button
        android:id="@+id/button4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/button3"
        android:text="@string/palys_button"/>

</RelativeLayout>

布局完成后,需要实现主活动的Java代码,代码实现如下:

package com.open_open.myapplication;



import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity implements
        android.view.View.OnClickListener {
    //实现监听方法
    private Button button,button2,button3,button4;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button=(Button)findViewById(R.id.button);
        button2=(Button)findViewById(R.id.button2);
        button3=(Button)findViewById(R.id.button3);
        button4=(Button)findViewById(R.id.button4);

        button.setOnClickListener(this);
        button2.setOnClickListener(this);
        button3.setOnClickListener(this);
        button4.setOnClickListener(this);
    }
    private int m=-1;
    @Override
    public void onClick(View v) {
        // TODO 自动生成的方法存根
        switch(v.getId())
        {
            case R.id.button:
                dialog1();//单选对话框
                break;
            case R.id.button2:
                dialog2();//多选对话框
                break;
            case R.id.button3:
                dialog3();//两个按键对话框
                break;
            case R.id.button4:
                dialog4();//三个按键对话框
                break;

        }
    }



    //单选对话框
    public void dialog1()
    {
        Builder Diy_Dialog = new AlertDialog.Builder(MainActivity.this);
        //在这个MainActivity中创建一个提示新的对话框,创建为一个对象Diy_Dialog
        Diy_Dialog.setTitle("国家");//标题
        String[] lg_item = { "中国", "韩国","日本" ,"美国"};
        Diy_Dialog.setSingleChoiceItems(lg_item, m,new DialogInterface.OnClickListener() {
            //放置一个单选对话框
            //在setSingleChoiceItems(指定对话框选择项的字符,一个选择项的序号,对这个单选对话框创建监听 )
            @Override
            public void onClick(DialogInterface dialog1, int which)
            {
//

            }
        });

        Diy_Dialog.setPositiveButton("确认",new DialogInterface.OnClickListener() {
            //放置一个Dialog按键    (按键字符,对这个按键dialog实现监听)
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO 自动生成的方法存根
                dialog.dismiss();//释放dialog对话框
                //MainActivity.this.finish();//结束这个主活动

            }

        });


        Diy_Dialog.create().show();//创建并显示对话框
    }



    //多选对话框
    private void dialog2()
    {
        final Builder Diy_Dialogs = new AlertDialog.Builder(MainActivity.this);
        //在这个MainActivity中创建一个提示新的对话框,创建为一个对象Diy_Dialog
        Diy_Dialogs.setTitle("国家");//标题
        //  Diy_Dialog2.setMessage("你喜欢的国家");
        String[] lg_item = { "中国", "美国","韩国","日本" };
        final boolean[] lg_size = {false,false,false,false};
        Diy_Dialogs.setMultiChoiceItems(lg_item, lg_size,new DialogInterface.OnMultiChoiceClickListener(){
            //放置一个多选选对话框
            //在setSingleChoiceItems(指定对话框选择项的字符,一个选择项的序号,对这个单选对话框创建监听 )

            @Override
            public void onClick(DialogInterface dialog, int which,boolean isChecked) {
                //()
                // TODO 自动生成的方法存根
                //lg_size[which]=isChecked;
            }

        });

        Diy_Dialogs.setPositiveButton("确认",new DialogInterface.OnClickListener() {
            //放置一个Dialog按键    (按键字符,对这个按键dialog实现监听)
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO 自动生成的方法存根
                dialog.dismiss();//释放dialog对话框
                //MainActivity.this.finish();//结束这个主活动

            }

        });
        Diy_Dialogs.create().show();//创建并显示对话框
    }


    //选择对话框两个按键
    private void dialog3()
    {
        Builder two_dialog= new AlertDialog.Builder(this);
        //构建dialog对象
        two_dialog.setTitle("提示");//标题
        two_dialog.setMessage("确认退出吗?");//内容
        two_dialog.setPositiveButton("确认",new DialogInterface.OnClickListener() {
            //放置一个Dialog按键    (按键字符,对这个按键dialog实现监听)
            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO 自动生成的方法存根
                dialog.dismiss();//释放dialog对话框
                MainActivity.this.finish();//结束这个主活动

            }

        });

        two_dialog.setNeutralButton("取消",new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO 自动生成的方法存根
                dialog.dismiss();//释放dialog对话框
                // MainActivity.this.finish();//结束这个主活动
            }
        });
        two_dialog.create().show();//创建并显示对话框
    }


    //选择对话框三个按键
    private void dialog4(){
        Builder three_dialog = new AlertDialog.Builder(this);
        //创建对象
        three_dialog.setTitle("提示"); //设置标题
        three_dialog.setMessage("是否确认退出?"); //设置内容
        //builder.setIcon(R.mipmap.ic_launcher);//设置图标,图片id即可
        three_dialog.setPositiveButton("确定", new DialogInterface.OnClickListener() { //设置确定按钮
            //创建一个"确定"对话框dialog 并实现监听
            @Override
//            public void onClick(DialogInterface dialog, int which) {
//                dialog.dismiss(); //关闭dialog
//
//            }
            public void onClick(DialogInterface dialog, int which) {
                // TODO 自动生成的方法存根
                dialog.dismiss();//释放dialog对话框
                MainActivity.this.finish();//结束这个主活动

            }

        });
        three_dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() { //设置取消按钮
            //创建一个"取消"对话框dialog 并实现监听
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();//关闭dialog
            }
        });

        three_dialog.setNeutralButton("忽略", new DialogInterface.OnClickListener() {//设置忽略按钮
            //创建一个"忽略"对话框dialog 并实现监听
            @Override
            public void onClick(DialogInterface dialog, int which) {
                dialog.dismiss();//关闭dialog
            }
        });
        //参数都设置完成,创建并显示出来
        three_dialog.create().show();
    }

}

这个几个按钮的代码有很强的相似度,大家只要理解其中一个或两个即可掌握dialog的简单使用。
下面是部分效果图:
这里写图片描述

这里写图片描述

这里写图片描述

持之以恒,方得始终

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小材大用

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值