文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2022-06-06 13:26

关注

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

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

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


    

下面的是在Layout下创建的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();
            }
        }) ;

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述
纯原创,如果对你有帮助,点个赞再走吧,谢啦!


作者:nuist__NJUPT


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯