Android 中 AlertDialog 的基本使用

Android 中 AlertDialog 的基本使用

1. 默认样式

DialogActivity

package com.example.hello;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.example.hello.util.ToastUtil;

public class DialogActivity extends AppCompatActivity {
    
    

    private Button btnDialog1, btnDialog2, btnDialog3, btnDialog4;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dialog);
        // 获取
        btnDialog1 = findViewById(R.id.btn_dialog_1);
        btnDialog2 = findViewById(R.id.btn_dialog_2);
        btnDialog3 = findViewById(R.id.btn_dialog_3);
        btnDialog4 = findViewById(R.id.btn_dialog_4);
        setListeners();
    }

    private void setListeners() {
    
    
        Onclick onclick = new Onclick();
        btnDialog1.setOnClickListener(onclick);
        btnDialog2.setOnClickListener(onclick);
        btnDialog3.setOnClickListener(onclick);
        btnDialog4.setOnClickListener(onclick);
    }

    class Onclick implements View.OnClickListener {
    
    
        @SuppressLint("NonConstantResourceId")
        @Override
        public void onClick(View v) {
    
    
            switch (v.getId()) {
    
    
                case R.id.btn_dialog_1:
                    AlertDialog.Builder builder1 = new AlertDialog.Builder(DialogActivity.this);
                    // 默认, 设置标题, 设置内容, 设置图标, 设置按钮 积极, 中立, 消极
                    builder1.setTitle("问题").setMessage("今天心情如何?").setIcon(R.mipmap.ic_launcher_round).setPositiveButton("非常好!", new DialogInterface.OnClickListener() {
    
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
    
    
                            ToastUtil.showShortToast(DialogActivity.this, "今天心情非常好!");
                        }
                    }).setNeutralButton("一般般!", new DialogInterface.OnClickListener() {
    
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
    
    
                            ToastUtil.showShortToast(DialogActivity.this, "今天心情一般般!");
                        }
                    }).setNegativeButton("很糟糕!", new DialogInterface.OnClickListener() {
    
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
    
    
                            ToastUtil.showShortToast(DialogActivity.this, "今天心情很糟糕!");
                        }
                    }).show();
                    break;
                case R.id.btn_dialog_2:
                case R.id.btn_dialog_4:
                case R.id.btn_dialog_3:
                    break;
                default:
                    throw new IllegalStateException("Unexpected value: " + v.getId());
            }
        }
    }

}

activity_dialog

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="15dp"
    tools:context=".DialogActivity">

    <Button
        android:id="@+id/btn_dialog_1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/style1" />

    <Button
        android:id="@+id/btn_dialog_2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/style2" />

    <Button
        android:id="@+id/btn_dialog_3"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/style3" />

    <Button
        android:id="@+id/btn_dialog_4"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="@string/style4" />

</LinearLayout>

在这里插入图片描述
在这里插入图片描述

2. 单选样式

package com.example.hello;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.example.hello.util.ToastUtil;

public class DialogActivity extends AppCompatActivity {
    
    

    private Button btnDialog1, btnDialog2, btnDialog3, btnDialog4;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dialog);
        // 获取
        btnDialog1 = findViewById(R.id.btn_dialog_1);
        btnDialog2 = findViewById(R.id.btn_dialog_2);
        btnDialog3 = findViewById(R.id.btn_dialog_3);
        btnDialog4 = findViewById(R.id.btn_dialog_4);
        setListeners();
    }

    private void setListeners() {
    
    
        Onclick onclick = new Onclick();
        btnDialog1.setOnClickListener(onclick);
        btnDialog2.setOnClickListener(onclick);
        btnDialog3.setOnClickListener(onclick);
        btnDialog4.setOnClickListener(onclick);
    }

    class Onclick implements View.OnClickListener {
    
    
        @SuppressLint("NonConstantResourceId")
        @Override
        public void onClick(View v) {
    
    
            switch (v.getId()) {
    
    
                case R.id.btn_dialog_1:
                    AlertDialog.Builder builder1 = new AlertDialog.Builder(DialogActivity.this);
                    // 默认, 设置标题, 设置内容, 设置图标, 设置按钮 积极, 中立, 消极
                    builder1.setTitle("问题").setMessage("今天心情如何?").setIcon(R.mipmap.ic_launcher_round).setPositiveButton("非常好!", new DialogInterface.OnClickListener() {
    
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
    
    
                            ToastUtil.showShortToast(DialogActivity.this, "今天心情非常好!");
                        }
                    }).setNeutralButton("一般般!", new DialogInterface.OnClickListener() {
    
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
    
    
                            ToastUtil.showShortToast(DialogActivity.this, "今天心情一般般!");
                        }
                    }).setNegativeButton("很糟糕!", new DialogInterface.OnClickListener() {
    
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
    
    
                            ToastUtil.showShortToast(DialogActivity.this, "今天心情很糟糕!");
                        }
                    }).show();
                    break;
                case R.id.btn_dialog_2:
                    AlertDialog.Builder builder2 = new AlertDialog.Builder(DialogActivity.this);
                    String[] items2 = {
    
    "男", "女"};
                    // 单选
                    builder2.setTitle("请选择性别: ").setItems(items2, new DialogInterface.OnClickListener() {
    
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
    
    
                            ToastUtil.showShortToast(DialogActivity.this, items2[which]);
                        }
                    }).show();
                    break;
                case R.id.btn_dialog_3:
                    AlertDialog.Builder builder3 = new AlertDialog.Builder(DialogActivity.this);
                    String[] items3 = {
    
    "男", "女"};
                    // 默认选择第一个, setCancelable(false): 点击周围不会消失.
                    builder3.setTitle("请选择性别: ").setSingleChoiceItems(items3, 0, new DialogInterface.OnClickListener() {
    
    
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
    
    
                            ToastUtil.showShortToast(DialogActivity.this, items3[which]);
                            // 消失
                            dialog.dismiss();
                        }
                    }).setCancelable(false).show();
                case R.id.btn_dialog_4:
                    break;
                default:
                    throw new IllegalStateException("Unexpected value: " + v.getId());
            }
        }
    }

}

在这里插入图片描述
在这里插入图片描述

3. 多选样式

package com.example.hello;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

import com.example.hello.util.ToastUtil;

public class DialogActivity extends AppCompatActivity {
    
    

    private Button btnDialog1, btnDialog2, btnDialog3, btnDialog4;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dialog);
        // 获取
        btnDialog1 = findViewById(R.id.btn_dialog_1);
        btnDialog2 = findViewById(R.id.btn_dialog_2);
        btnDialog3 = findViewById(R.id.btn_dialog_3);
        btnDialog4 = findViewById(R.id.btn_dialog_4);
        setListeners();
    }

    private void setListeners() {
    
    
        Onclick onclick = new Onclick();
        btnDialog1.setOnClickListener(onclick);
        btnDialog2.setOnClickListener(onclick);
        btnDialog3.setOnClickListener(onclick);
        btnDialog4.setOnClickListener(onclick);
    }

    class Onclick implements View.OnClickListener {
    
    
        @SuppressLint("NonConstantResourceId")
        @Override
        public void onClick(View v) {
    
    
            switch (v.getId()) {
    
    
                case R.id.btn_dialog_1:
                    AlertDialog.Builder builder1 = new AlertDialog.Builder(DialogActivity.this);
                    // 默认, 设置标题, 设置内容, 设置图标, 设置按钮 积极, 中立, 消极
                    builder1.setTitle("问题").setMessage("今天心情如何?").setIcon(R.mipmap.ic_launcher_round).setPositiveButton("非常好!", (dialog, which) -> ToastUtil.showShortToast(DialogActivity.this, "今天心情非常好!")).setNeutralButton("一般般!", (dialog, which) -> ToastUtil.showShortToast(DialogActivity.this, "今天心情一般般!")).setNegativeButton("很糟糕!", (dialog, which) -> ToastUtil.showShortToast(DialogActivity.this, "今天心情很糟糕!")).show();
                    break;
                case R.id.btn_dialog_2:
                    AlertDialog.Builder builder2 = new AlertDialog.Builder(DialogActivity.this);
                    String[] items2 = {
    
    "男", "女"};
                    // 单选
                    builder2.setTitle("请选择性别: ").setItems(items2, (dialog, which) -> ToastUtil.showShortToast(DialogActivity.this, items2[which])).show();
                    break;
                case R.id.btn_dialog_3:
                    AlertDialog.Builder builder3 = new AlertDialog.Builder(DialogActivity.this);
                    String[] items3 = {
    
    "男", "女"};
                    // 默认选择第一个, setCancelable(false): 点击周围不会消失.
                    builder3.setTitle("请选择性别: ").setSingleChoiceItems(items3, 0, (dialog, which) -> {
    
    
                        ToastUtil.showShortToast(DialogActivity.this, items3[which]);
                        // 消失
                        dialog.dismiss();
                    }).setCancelable(false).show();
                case R.id.btn_dialog_4:
                    // 多选
                    AlertDialog.Builder builder4 = new AlertDialog.Builder(DialogActivity.this);
                    String[] items4 = {
    
    "打球", "游泳", "学习", "打游戏", "看动漫"};
                    // 和 items4 个数相同, true 表示选中, false 表示没有选中
                    boolean[] isSelected = {
    
    false, false, true, true, true};
                    builder4.setTitle("请选择爱好: ").setMultiChoiceItems(items4, isSelected, (DialogInterface.OnMultiChoiceClickListener) (dialog, which, isChecked) -> {
    
    
                        ToastUtil.showShortToast(DialogActivity.this, items4[which] + ": " + isChecked);
                    }).setPositiveButton("确定", (DialogInterface.OnClickListener) (dialog, which) -> {
    
    
                        ToastUtil.showShortToast(DialogActivity.this, "确定");
                    }).setNegativeButton("取消", (DialogInterface.OnClickListener) (dialog, which) -> {
    
    
                        ToastUtil.showShortToast(DialogActivity.this, "取消");
                    }).show();
                    break;
                default:
                    throw new IllegalStateException("Unexpected value: " + v.getId());
            }
        }
    }

}

在这里插入图片描述

4. 自定义样式

需要建立一个 layout_dialog.xml 文件.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:padding="15dp">

    <EditText
        android:id="@+id/dialog_username"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_marginBottom="15dp"
        android:autofillHints=""
        android:background="@drawable/bg_username"
        android:drawableStart="@mipmap/username"
        android:drawablePadding="10dp"
        android:hint="@string/username"
        android:inputType="text"
        android:paddingLeft="15dp"
        android:paddingRight="15dp"
        android:textColor="@color/red"
        android:textSize="16sp" />

    <EditText
        android:id="@+id/dialog_password"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:layout_marginBottom="15dp"
        android:autofillHints=""
        android:background="@drawable/bg_username"
        android:drawableStart="@mipmap/password"
        android:drawablePadding="10dp"
        android:hint="@string/password"
        android:inputType="textPassword"
        android:paddingLeft="15dp"
        android:paddingRight="15dp"
        android:textColor="@color/red"
        android:textSize="16sp" />

    <Button
        android:id="@+id/dialog_login"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/bg_btn4"
        android:text="@string/login_en"
        android:textAllCaps="false"
        android:textColor="@color/white"
        android:textSize="23sp" />

</LinearLayout>
package com.example.hello;

import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;

import android.annotation.SuppressLint;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;

import com.example.hello.util.ToastUtil;

public class DialogActivity extends AppCompatActivity {
    
    

    private Button btnDialog1, btnDialog2, btnDialog3, btnDialog4, btnDialog5;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    
    
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_dialog);
        // 获取
        btnDialog1 = findViewById(R.id.btn_dialog_1);
        btnDialog2 = findViewById(R.id.btn_dialog_2);
        btnDialog3 = findViewById(R.id.btn_dialog_3);
        btnDialog4 = findViewById(R.id.btn_dialog_4);
        btnDialog5 = findViewById(R.id.btn_dialog_5);
        setListeners();
    }

    private void setListeners() {
    
    
        Onclick onclick = new Onclick();
        btnDialog1.setOnClickListener(onclick);
        btnDialog2.setOnClickListener(onclick);
        btnDialog3.setOnClickListener(onclick);
        btnDialog4.setOnClickListener(onclick);
        btnDialog5.setOnClickListener(onclick);
    }

    class Onclick implements View.OnClickListener {
    
    
        @SuppressLint({
    
    "NonConstantResourceId", "InflateParams"})
        @Override
        public void onClick(View v) {
    
    
            switch (v.getId()) {
    
    
                case R.id.btn_dialog_1:
                    AlertDialog.Builder builder1 = new AlertDialog.Builder(DialogActivity.this);
                    // 默认, 设置标题, 设置内容, 设置图标, 设置按钮 积极, 中立, 消极
                    builder1.setTitle("问题").setMessage("今天心情如何?").setIcon(R.mipmap.ic_launcher_round).setPositiveButton("非常好!", (dialog, which) -> ToastUtil.showShortToast(DialogActivity.this, "今天心情非常好!")).setNeutralButton("一般般!", (dialog, which) -> ToastUtil.showShortToast(DialogActivity.this, "今天心情一般般!")).setNegativeButton("很糟糕!", (dialog, which) -> ToastUtil.showShortToast(DialogActivity.this, "今天心情很糟糕!")).show();
                    break;
                case R.id.btn_dialog_2:
                    AlertDialog.Builder builder2 = new AlertDialog.Builder(DialogActivity.this);
                    String[] items2 = {
    
    "男", "女"};
                    // 单选
                    builder2.setTitle("请选择性别: ").setItems(items2, (dialog, which) -> ToastUtil.showShortToast(DialogActivity.this, items2[which])).show();
                    break;
                case R.id.btn_dialog_3:
                    AlertDialog.Builder builder3 = new AlertDialog.Builder(DialogActivity.this);
                    String[] items3 = {
    
    "男", "女"};
                    // 默认选择第一个, setCancelable(false): 点击周围不会消失.
                    builder3.setTitle("请选择性别: ").setSingleChoiceItems(items3, 0, (dialog, which) -> {
    
    
                        ToastUtil.showShortToast(DialogActivity.this, items3[which]);
                        // 消失
                        dialog.dismiss();
                    }).setCancelable(false).show();
                case R.id.btn_dialog_4:
                    // 多选
                    AlertDialog.Builder builder4 = new AlertDialog.Builder(DialogActivity.this);
                    String[] items4 = {
    
    "打球", "游泳", "学习", "打游戏", "看动漫"};
                    // 和 items4 个数相同, true 表示选中, false 表示没有选中
                    boolean[] isSelected = {
    
    false, false, true, true, true};
                    builder4.setTitle("请选择爱好: ").setMultiChoiceItems(items4, isSelected, (DialogInterface.OnMultiChoiceClickListener) (dialog, which, isChecked) -> {
    
    
                        ToastUtil.showShortToast(DialogActivity.this, items4[which] + ": " + isChecked);
                    }).setPositiveButton("确定", (DialogInterface.OnClickListener) (dialog, which) -> {
    
    
                        ToastUtil.showShortToast(DialogActivity.this, "确定");
                    }).setNegativeButton("取消", (DialogInterface.OnClickListener) (dialog, which) -> {
    
    
                        ToastUtil.showShortToast(DialogActivity.this, "取消");
                    }).show();
                    break;
                case R.id.btn_dialog_5:
                    AlertDialog.Builder builder5 = new AlertDialog.Builder(DialogActivity.this);
                    View inflate = LayoutInflater.from(DialogActivity.this).inflate(R.layout.layout_dialog, null);
                    Button login = inflate.findViewById(R.id.dialog_login);
                    login.setOnClickListener(view -> {
    
    
                        ToastUtil.showShortToast(DialogActivity.this, "登录成功");
                    });
                    builder5.setTitle("请先登录").setView(inflate).show();
                    break;
                default:
                    throw new IllegalStateException("Unexpected value: " + v.getId());
            }
        }
    }

}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/YKenan/article/details/113003970
今日推荐