首页 > 其他分享 >AlertDialog对话框

AlertDialog对话框

时间:2024-06-16 13:59:24浏览次数:11  
标签:对话框 builder AlertDialog button new void

简介

        AlertDialog是一个常用的组件,用于展示一个漂浮在当前界面之上的对话框,常用来显示警告、确认信息或简单的用户输入。通常,我们不是直接实例化AlertDialog对象,而是通过其内部类AlertDialog.Builder来构建。AlertDialog 不同于前面已经学习过的 UI 控件,它不能用 new 方法创造出来,也不能用 XML 创建,只能通过 AlertDialob 的内部类 Builder 来创建。

一、AlertDialog.Builder主要方法

        相应方法简单解释:

                Item项设置及监听,MultiChoiceItems多选,SingleChoiceItems单选,Title标题,Message对话框的内容,setView加载自定义布局。

Neutral中立按钮,Posi确定按钮,Nega取消按钮

二、三大按钮

        确定按钮setPositivebuttom("确定",null),setNegativebutton("取消",null),setNatralbuttom("中立",null)均可以设置对应的监听。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder builder= new AlertDialog.Builder(MainActivity.this);
                builder.setTitle("中心技术")
                        .setIcon(R.mipmap.ic_launcher)
                                .setView(R.layout.item_fruit);
                builder.setPositiveButton("确定",null);
                builder.setNegativeButton("取消",null);
                builder.setNeutralButton("中立",null);
                builder.create().show();
            }
        });
    }
}

效果:

三、setView自定义模板加载

          创建Layout布局,通过setView加载布局:

        可以在Layout的xml布局中自定义对话框的各种样式。

        此例中的xml:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="132dp"
        android:layout_marginTop="32dp"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        android:src="@drawable/ic_launcher_background" />
    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:text="对话框"
        app:layout_constraintEnd_toEndOf="@+id/imageView"
        app:layout_constraintHorizontal_bias="0.54"
        app:layout_constraintStart_toStartOf="@+id/imageView"
        app:layout_constraintTop_toBottomOf="@+id/imageView" />
</androidx.constraintlayout.widget.ConstraintLayout>
                代码:

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder builder= new AlertDialog.Builder(MainActivity.this);
                builder.setTitle("中心技术")
                        .setIcon(R.mipmap.ic_launcher)
                                .setView(R.layout.item_fruit);
                builder.create().show();
            }
        });
    }
}

四、setItems列表项对话框

        .setItems() 方法参数解释:

.setItems() 方法是 AlertDialog.Builder 类中的一个方法,用于在对话框中展示一系列可点击的文本项。与 .setSingleChoiceItems().setMultiChoiceItems() 不同,.setItems() 不涉及复选或单选逻辑,每个选项点击后都会触发相同的监听器,通常用于提供一系列操作供用户选择。下面是这个方法的参数解释及使用示例:

  • Items: 这是一个字符序列数组(CharSequence[])或列表(List<CharSequence>),包含了要在对话框中显示的每个选项的文本。

  • new DialogInterface.OnClickListener(): 这是一个匿名内部类,用于监听每个选项的点击事件。当用户点击列表中的任意一项时,会触发 onClick 方法。它包含两个参数:

    • DialogInterface dialog: 触发点击事件的对话框实例。
    • int which: 用户点击的选项的索引,索引与Items数组中的位置相对应。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
              AlertDialog.Builder builder= new AlertDialog.Builder(MainActivity.this);
                String[] Items = new String[]{"笑笑", "开心", "喜悦", "高兴", "欢喜"};
              builder.setTitle("中心技术")
                      .setIcon(R.mipmap.ic_launcher)
                      .setItems(Items, new DialogInterface.OnClickListener() {
                          @Override
                          public void onClick(DialogInterface dialog, int which) {
                              Toast.makeText(MainActivity.this, "选择"+Items[which], Toast.LENGTH_SHORT).show();
                          }
                      });

              builder.setPositiveButton("确认",null);
              builder.create().show();
            }
        });
    }
}

五、setSingleChoiceItems单选列表项的对话框

.setSingleChoiceItems()中参数解释:

  • Items: 这是一个字符数组(CharSequence[])或列表(List<CharSequence>),包含了要在对话框中显示为单选列表的每个项目的文本。每个项目将作为一个单独的可选项出现在列表中。

  • 9: 默认索引(默认选中)=这个参数表示默认选中的列表项的索引。在上述代码中,索引为9的项目会在对话框打开时被预选。索引是从0开始的,所以这里实际上是选择了第10个条目。确保提供的索引是有效的,即在Items的范围内,否则可能会引发异常。

  • new DialogInterface.OnClickListener(): 这是一个匿名内部类,用于监听列表项的选择事件。当用户从列表中选择一个项目时,onClick 方法会被调用。你需要在这个监听器里定义用户选择某项之后的处理逻辑。它的参数包括:

    • DialogInterface dialog: 触发点击事件的对话框实例。
    • int which: 所选标号=用户所选项目的索引。这个索引与你在Items中定义的项目一一对应,可以用来识别用户选择了哪一个选项。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
              AlertDialog.Builder builder= new AlertDialog.Builder(MainActivity.this);
                String[] Items = new String[]{"笑笑", "开心", "喜悦", "高兴", "欢喜"};
              builder.setTitle("中心技术")
                      .setIcon(R.mipmap.ic_launcher)
                      .setSingleChoiceItems(Items, 9, new DialogInterface.OnClickListener() {
                          @Override
                          public void onClick(DialogInterface dialog, int which) {
                              Toast.makeText(MainActivity.this, "选择"+Items[which], Toast.LENGTH_SHORT).show();
                          }
                      });
              builder.setPositiveButton("确认",null);
              builder.create().show();
            }
        });
    }
}

效果:

<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="TbGMwQrm-1718346348247" src="https://live.csdn.net/v/embed/398721"></iframe>

setSingleChoiceItems单选

六、setMultiChoiceItems多选列表项的对话框

.setMultiChoiceItems() 方法参数解释:

.setMultiChoiceItems() 方法用于在 AlertDialog 中创建一个多选列表。与 .setSingleChoiceItems() 不同,它允许用户选择列表中的多个项目。以下是该方法的参数解析和使用示例:

  • items: 数据 = 这是一个字符序列数组(CharSequence[])或列表(List<CharSequence>),包含要显示在多选列表中的各个项目文本。

  • checkedItem: 选值 = 这是一个布尔型数组(boolean[]),用于指定列表中哪些项目在对话框打开时默认被选中。数组的索引需与items中元素的索引相对应,true 表示对应的项目被选中,false 表示未被选中。

  • new DialogInterface.OnMultiChoiceClickListener(): 监听 = 这是一个匿名内部类,用于监听多选列表项的选择状态变化。当用户更改列表中项目的选中状态时,会触发 onClick 方法。它有两个参数:

    • DialogInterface dialog: 触发事件的对话框实例。
    • int which: 被用户改变选中状态的项目的索引。
    • boolean isChecked: 表示该项目当前是否被选中。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        Button button = findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
                String[] items = new String[]{"笑笑", "开心", "喜悦", "高兴", "欢喜"};
                 boolean[] checkedItem = new boolean[]{false, false, false, false,false};
                builder.setTitle("中心技术")
                        .setIcon(R.mipmap.ic_launcher)
                        .setMultiChoiceItems(items, checkedItem, new DialogInterface.OnMultiChoiceClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                                checkedItem[which] = isChecked;
                            }
                        });
                builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        String result = "";
                        for (int i = 0; i < checkedItem.length; i++) {
                            if (checkedItem[i]) {
                                result += items[i] + ",";
                            }
                        }
                        Toast.makeText(MainActivity.this, "结果["+result+"]", Toast.LENGTH_SHORT).show();
                    }
                });
                builder.create().show();
            }
        });
    }

效果:

<iframe allowfullscreen="true" data-mediaembed="csdn" frameborder="0" id="zpSjqtrC-1718346375849" src="https://live.csdn.net/v/embed/398711"></iframe>

setMultChioceItems效果

标签:对话框,builder,AlertDialog,button,new,void
From: https://blog.csdn.net/m0_74225871/article/details/139652848

相关文章

  • C++全栈聊天项目(22) 气泡聊天对话框
    气泡聊天框设计我们期待实现如下绿色的气泡对话框对于我们自己发出的信息,我们可以实现这样一个网格布局管理NameLabel用来显示用户的名字,Bubble用来显示聊天信息,Spacer是个弹簧,保证将NameLabel,IconLabel,Bubble等挤压到右侧。如果是别人发出的消息,我们设置这样一个网......
  • tkinter文件选择对话框
    tkinter文件选择对话框Tkinter文件选择对话框效果代码Tkinter文件选择对话框Tkinter提供以下文件选择对话框:tkinter.filedialog.askopenfilename():打开文件对话框,选择单个文件。tkinter.filedialog.askopenfilenames():打开文件对话框,选择多个文件。tkinter.filed......
  • 【C++】【MFC】模态和非模态对话框
    1、模态对话框,开启后限制操作父窗口voidCMFCApplication1Dlg::OnBnClickedButton2(){//TODO:在此添加控件通知处理程序代码CDlgExeCexec;exec.DoModal();}调用DoModal即可完成。 2、非模态对话框,开启后对任意窗口都无限制voidCMFCApplication1Dlg......
  • Qt 漂亮的Material样式对话框(QtMaterialDialog)
    前言在实际项目开发中,对于漂亮美观的UI界面大多数都是采用样式表来实现的,但是实际上即使是样式表很少也能实现比较带科技炫酷的风格,本篇介绍的是模仿谷歌Material风格的UI界面,基于大牛的第三方开源控件库,界面效果大致如下正文我对接口进行了封装,关键代码献上:头文件:1#......
  • 【Qt 专栏】文件对话框 文件的弹窗选择-QFileDialog
    前言:通过按钮实现文件弹窗选择以及关联的操作效果图就和平时用电脑弹出的选文件对话框一样原型图技能:头文件:#include<QFileDialog>//头文件QStringfilename=QFileDialog::getOpenFileName(this,"弹窗标题","E://","Images(*.png*.jpg)");弹出对话框选择文件 实......
  • Qt 对话框常见类型
    前言        对话框是GUI程序设计中不可或缺的组成部分,很多不能或者不适合放入主窗口的功能组件都必须放在对话框中。        Qt使用QDialog类实现对话框,通常会设计一个类继承QDialog类。QDialog类(及其派生类,以及所有Qt:Dialog类型的类)对其parent......
  • prompt() 快速实现浏览器的对话框
    prompt() 方法是JavaScript中的一个内置函数,用于在浏览器中显示一个对话框,这个对话框包含一个文本字段和一个或多个按钮,通常是一个“确定”按钮和一个可选的“取消”按钮。用户可以在文本字段中输入数据,然后点击按钮来响应对话框。下面是 prompt() 方法的基本语法:letuser......
  • 文件对话框OpenFileDialog和SaveFileDialog
    文件对话框常用属性表:属性名功能说明InitialDirectory对话框的初始目录Filter文件筛选器,按"显示名称|类型"格式编写例如,“文本文件(.txt)|.txt|所有文件(.)||.”FilterIndex在对话框中选择的文件筛选器的索引,如果选第一项就设为1FileName第一个在对话框中显示的文件或最......
  • Java Swing容器:文件对话框
           文件对话框是专门用于对文件或目录进行浏览和选择的对话框。可以使用JFileChooser类创建文件对话框,其主要构造方法如下:JFileChooser():根据用户默认目录创建文件对话框。JFileChooser(FilecurrentDirectory):根据File型参数所指定的目录创建文件对话框。JFileCho......
  • linux之whiptail交互式shell脚本对话框
    简单说明当你在linux环境下setup软件的时候就会有相应的对话框让你输入。虽然我们已经习惯了这种交互的方法,但是如果有一种直观的界面来输入是不是会更加友好和方便呢,在shell脚本中你可以使用-whiptail指令来完成。效果如下[root@~]#cattest.sh#!/bin/bashOPTION=$(whiptai......