Android studio 之 对话框

普通对话框

用构建器创建对话框:先创建对话框再显示

setTitle 设置对话框标题

setMessage 设置对话框展示消息

setPositiveButton 设置对话框确定按钮

setNegativeButton 设置对话框取消按钮

setlcon() 设置对话框图标

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("提示")
       .setMessage("您确定要退出程序吗?")
       .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    finish();
                }
            })
       .setNegativeButton("取消", null).show();

自定义对话框

创建对话框布局

<?xml version="1.0" encoding="utf-8"?>
<!--
    自定义对话框-1.为对话框设置布局
-->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:background="@mipmap/download1"
    android:gravity="center_horizontal"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="200dp"
        android:text="您确定要退出吗?"
        android:textColor="@color/white"
        android:textSize="34dp"
        android:textStyle="bold"/>
    <LinearLayout
        android:orientation="horizontal"
        android:layout_margin="25dp"
        android:gravity="center_horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <Button
            android:id="@+id/yes_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="确定"/>
        <Button
            android:id="@+id/no_btn"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:text="取消"/>
    </LinearLayout>
</LinearLayout>

设置风格:在values下的themes文件中添加以下字段

<!--
        自定义对话框-2.设置style
        <item name="android:windowFullscreen">true</item>   要全屏吗? 对
        <item name="android:windowNoTitle">true</item> 不要标题吗? 对
    -->
    <style name="Mydialog" parent="android:style/Theme.Dialog">
        <item name="android:windowNoTitle">true</item>
    </style>

创建对话框布局对应的activity类,将对话框布局应用到当前的自定义dialog中,并在这个类中设置按钮的点击事件

package com.example.androidstudiostudy;

import android.app.Dialog;
import android.content.Context;
import android.view.View;
import androidx.annotation.NonNull;

// 创建一个自定义对话框类
public class MyDialog extends Dialog {
    // 只有一个参数的构造方法。传递需要添加自定义对话框的环境上下文
    /*public MyDialog(@NonNull Context context) {
        super(context);
        // 1.为对话框设置布局
        setContentView(R.layout.dialog_layout);
    }*/
    // 有两个参数的构造方法
    // 参数1:需要添加自定义对话框的环境上下文
    // 参数2: 设置的样式id
    public MyDialog(@NonNull Context context, int themeResId) {
        super(context, themeResId);
        // 自定义对话框-3.将布局应用到当前自定义的对话框
        setContentView(R.layout.dialog_layout);

        // 为对话框的两个按钮设置点击方法
        findViewById(R.id.yes_btn).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 点击确认 -退出
                System.exit(0);
            }
        });
        findViewById(R.id.no_btn).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // 点击取消 -取消弹窗
                dismiss();
            }
        });
    }
}

.实例化对话框,根据对话框类的构造函数不同传入不同的参数,此时传入的是 环境上下文和样式id,并显示.show()

/ 自定义对话框-4.实例化对话框并显示
传入当前环境变量和第2步设置好的风格样式id*/
MyDialog myDialog = new MyDialog(this,R.style.Mydialog);
myDialog.show();
相关推荐
zhoupenghui1686 分钟前
golang时间相关函数总结
服务器·前端·golang·time
计算机小白一个8 分钟前
蓝桥杯 Java B 组之岛屿数量、二叉树路径和(区分DFS与回溯)
java·数据结构·算法·蓝桥杯
White graces21 分钟前
正则表达式效验邮箱格式, 手机号格式, 密码长度
前端·spring boot·spring·正则表达式·java-ee·maven·intellij-idea
庸俗今天不摸鱼21 分钟前
Canvas进阶-4、边界检测(流光,鼠标拖尾)
开发语言·前端·javascript·计算机外设
菠菠萝宝22 分钟前
【Java八股文】10-数据结构与算法面试篇
java·开发语言·面试·红黑树·跳表·排序·lru
不会Hello World的小苗29 分钟前
Java——链表(LinkedList)
java·开发语言·链表
bubusa~>_<1 小时前
解决npm install 出现error,比如:ERR_SSL_CIPHER_OPERATION_FAILED
前端·npm·node.js
Allen Bright1 小时前
【Java基础-46.3】Java泛型通配符详解:解锁类型安全的灵活编程
java·开发语言
柃歌1 小时前
【UCB CS 61B SP24】Lecture 7 - Lists 4: Arrays and Lists学习笔记
java·数据结构·笔记·学习·算法
柃歌1 小时前
【UCB CS 61B SP24】Lecture 4 - Lists 2: SLLists学习笔记
java·数据结构·笔记·学习·算法