欢迎回来Android入门教程的第十六期,本期继续介绍几种AlertDialog。那直接进入正题。

上期传送门:Android入门教程 #15 – AlertDialog(1) – LovelyCat的小站 (lovelycatv.cn)

1.单选列表对话框

同样先新建一个AlertDialog,单选列表嘛,还需要准备一个String[]数组承接列表,然后我们用setSingleChoiceItems方法给对话框设置一个单选列表:

        final String[] singleItems = new String[]{"单选1","单选2","单选3","单选4","单选5"};
        AlertDialog alertDialog2 = new AlertDialog.Builder(this)
                .setIcon(R.mipmap.ic_launcher)
                .setTitle("这里是对话框的标题")
                .setSingleChoiceItems(singleItems, -1, new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        System.out.println("你选择了第"+ i+1 + "项,内容为 " + singleItems[i]);
                    }
                })
                .create();
        alertDialog2.show();
1627977432 Img 20210803 152429

2.复选列表对话框

复选列表比前三种的区别是多了一个布尔数组来保存选中状态。

        AlertDialog alertDialog3 = new AlertDialog.Builder(this)
                .setIcon(R.mipmap.ic_launcher)
                .setTitle("这里是对话框的标题")
                .setMultiChoiceItems(multiItems, defaultCheck, new DialogInterface.OnMultiChoiceClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i, boolean b) {
                        if (b) {
                            checkedItems.add(i);
                        }else {
                            checkedItems.remove(checkedItems.indexOf(i));
                        }
                    }
                })
                .create();
        alertDialog3.show();
1627977438 Img 20210803 153335

3.自定义布局

自定义布局简而言之就是给Dialog自定义一个View嘛…

        final EditText editText = new EditText(this);
        AlertDialog alertDialog4 = new AlertDialog.Builder(this)
                .setTitle("这里是自定义布局")
                .setIcon(R.mipmap.ic_launcher)
                .setView(editText)
                .setPositiveButton("确认", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        // Todo something
                    }
                })
                .create();
        alertDialog4.show();
1627977443 Img 20210803 153903

当你熟练掌握代码创建布局之后,你就可以…

        LinearLayout linearLayout = new LinearLayout(this);
        linearLayout.setOrientation(LinearLayout.VERTICAL);
        EditText editText = new EditText(this);
        editText.setHint("这里是Edittext 1");

        LinearLayout linearLayoutX = new LinearLayout(this);
        linearLayoutX.setOrientation(LinearLayout.HORIZONTAL);

        LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT, 1);

        EditText editText2 = new EditText(this);
        editText2.setHint("这里是Edittext 2");
        editText2.setLayoutParams(layoutParams);
        linearLayoutX.addView(editText2);

        EditText editText3 = new EditText(this);
        editText3.setHint("这里是Edittext 3");
        editText3.setLayoutParams(layoutParams);
        linearLayoutX.addView(editText3);

        linearLayout.addView(editText);
        linearLayout.addView(linearLayoutX);
        AlertDialog alertDialog4 = new AlertDialog.Builder(this)
                .setTitle("这里是自定义布局")
                .setIcon(R.mipmap.ic_launcher)
                .setView(linearLayout)
                .setPositiveButton("确认", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        // Todo something
                    }
                })
                .create();
        alertDialog4.show();
1627977448 Img 20210803 155547

上面的布局代码看起来比较抽象,但真正自己在编写的时候,脑子里已经在构建布局的预览图了。所以代码创建布局也不是什么难事,就是很抽象


那本期就先到此结束啦,AlertDialog的内容已经讲得差不多了,下一期讲讲ProgressDialog(进度对话框),下期见。


0 条评论

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注