Android Studio初学笔记-Day21-AlertDialog(2)

接续上一篇AlertDialog的基础介绍,今天来接着介绍更多AlertDialog的用法。
从上一篇的成果看来功能上算是蛮齐全,不过在按钮的位置配置上我个人觉得有些奇怪,所以今天就来讲可以自己配置自己想要版面的方法给跟我有同感的人把上一篇的内容稍作加工。
首先在res/layout加入一个xml档,设计一个自己想要的Alertdialog,这里可以自己加入自己想要的按钮并设计位置,或者如同上一篇用AlertDialog所提供的,这里就示范加入自订的按钮以及如何设定自订按钮的功能。如下
https://ithelp.ithome.com.tw/upload/images/20210908/20139136BUXr0pW0jb.png

程序码

  public void secondAlert(View v){
        LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
        final View dialog2 = inflater.inflate(R.layout.alertdialog1,null);
        AlertDialog.Builder builder2 = new AlertDialog.Builder(this);
        builder2.setView(dialog2);
        Button bt1 = (Button)dialog2.findViewById(R.id.bt1);
        Button bt2 = (Button)dialog2.findViewById(R.id.bt2);
        AlertDialog ad1 = builder2.create();
        ad1.setCancelable(true);    //设定返回键是否可以关掉AlertDialog
        ad1.show();
        bt1.setOnClickListener(new Button.OnClickListener(){
            @Override
            public void onClick(View v){
                Toast.makeText(MainActivity.this,"取消",Toast.LENGTH_SHORT).show();
                ad1.dismiss();
            }
        });
        bt2.setOnClickListener(new Button.OnClickListener(){
            @Override
            public void onClick(View v){
                Toast.makeText(MainActivity.this,"确定",Toast.LENGTH_SHORT).show();
            }
        });
    }

先透过前两行
LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
final View dialog2 = inflater.inflate(R.layout.alertdialog1,null);
将刚设计好的Layout创成物件,类似於之前RecyclerView时的用法,接着写一个Builder与上一章相同,不过这次Builder的设定久没那麽复杂,只要负责用setView()把刚才的创好的layout物件引入进来。这次还加入个新东西就是AlertDialog ad1 = builder2.create(); 创建了AlertDialog的物件,在这里主要可以帮我们控制画面是否在按钮後消失,但其实也能做到setCancelable(true)和show()的功能。如果需要则加入dismiss()来达到关闭AlertDialog效果。

成果

https://ithelp.ithome.com.tw/upload/images/20210908/20139136ft2bJwHG3t.pnghttps://ithelp.ithome.com.tw/upload/images/20210908/20139136yp0WkrZkp3.png
AlertDialog就讲到这边,谢谢大家~/images/emoticon/emoticon41.gif


<<:  Day#21 Chat

>>:  【Day21】I2C的介绍

【Day4】:来使用STM32CubeIDE吧!

程序码导读 点开我们的main.c档案,可以看到里面密密麻麻的注解,第一次看到还真令人害怕,但其实他...

【Day23】Git 版本控制 - 修改 commit 纪录:reset

上一次有提到说,修改 commit 的方式有以下几种: 把 .git 目录整个删除,暴力破解法,请不...

心得结语(Day30)

今天是铁人赛的最後一天了,回想起这个月的技术发表,真的是受益良多,觉得铁人赛最难坚持的点 就是每天下...

k8s开的kubectl logs路径修改

【YC的迷路青春】 如果不要用预设的路径,例如专案是用tomcat起的,我们不想看tomcat的lo...

时间挤一下就有了,我们挤了没?

前言 利用前几天的篇幅,简单的讨论敏捷与 Scrum,也传达了我觉得团队需要注意的地方。今天再让我们...