android中各种对话框整理

作者: 咸鱼咸不咸 | 来源:发表于2019-07-07 15:02 被阅读10次

对话框整理

普通对话框

在这里插入图片描述
/**
     * 普通对话框
     * 
     * 对话框中的一些属性不一定是必须的,比如可以不设置标题、图标之类的,
     * 
     * 也可以只设置一个按钮或者两个按钮,如常见的确认退出对话框
     */
    private void commonDialog() {
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setTitle("普通对话框");// 设置标题
        // builder.setIcon(R.drawable.ic_launcher);//设置图标
        builder.setMessage("我是内容");// 为对话框设置内容
        // 为对话框设置取消按钮
        builder.setNegativeButton("取消", new OnClickListener() {

            @Override
            public void onClick(DialogInterface arg0, int arg1) {
                // TODO Auto-generated method stub
                myToast("您点击了取消按钮");
            }
        });
        // 为对话框设置中立按钮
        // builder.setNeutralButton("中立", new OnClickListener() {
        //
        // @Override
        // public void onClick(DialogInterface arg0, int arg1) {
        // // TODO Auto-generated method stub
        // myToast("您点击了中立按钮");
        // }
        // });
        // 为对话框设置确定按钮
        builder.setPositiveButton("确定", new OnClickListener() {

            @Override
            public void onClick(DialogInterface arg0, int arg1) {
                // TODO Auto-generated method stub
                myToast("您点击了确定按钮");
            }
        });
        builder.create().show();// 使用show()方法显示对话框

    }

单选对话框

在这里插入图片描述
/**
     * 单选对话框
     */
    private void singleDialog() {
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setTitle("单选对话框");
        final String[] items = { "男", "女" };// 创建一个存放选项的数组
        final boolean[] checkedItems = { true, false };// 存放选中状态,true为选中
                                                        // ,false为未选中,和setSingleChoiceItems中第二个参数对应
        // 为对话框添加单选列表项
        // 第一个参数存放选项的数组,第二个参数存放默认被选中的项,第三个参数点击事件
        builder.setSingleChoiceItems(items, 0, new OnClickListener() {

            @Override
            public void onClick(DialogInterface arg0, int arg1) {
                // TODO Auto-generated method stub
                for (int i = 0; i < checkedItems.length; i++) {
                    checkedItems[i] = false;
                }
                checkedItems[arg1] = true;
            }
        });
        builder.setNegativeButton("取消", new OnClickListener() {

            @Override
            public void onClick(DialogInterface arg0, int arg1) {
                // TODO Auto-generated method stub
                arg0.dismiss();
            }
        });
        builder.setPositiveButton("确定", new OnClickListener() {

            @Override
            public void onClick(DialogInterface arg0, int arg1) {
                // TODO Auto-generated method stub
                String str = "";
                for (int i = 0; i < checkedItems.length; i++) {
                    if (checkedItems[i]) {
                        str = items[i];
                    }
                }
                myToast("您选择了" + str);
            }
        });
        builder.create().show();

    }

多选对话框

在这里插入图片描述
/**
     * 多选对话框
     */
    private void multipleDialog() {
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setTitle("多选对话框");
        final String[] items = { "数学", "语文", "英语", "政治" };// 存放选项的数组
        final boolean[] checkedItems = { false, true, false, false };

        // 第一个参数选项,第二个参数选项的状态,第三个点击事件
        builder.setMultiChoiceItems(items, checkedItems,
                new OnMultiChoiceClickListener() {

                    @Override
                    public void onClick(DialogInterface arg0, int arg1,
                            boolean arg2) {
                        // TODO Auto-generated method stub
                        if (arg2) {
                            checkedItems[arg1] = true;
                        } else {
                            checkedItems[arg1] = false;
                            myToast("您取消了" + items[arg1]);
                        }
                    }
                });
        builder.setNegativeButton("取消", new OnClickListener() {

            @Override
            public void onClick(DialogInterface arg0, int arg1) {
                // TODO Auto-generated method stub
                arg0.dismiss();
            }
        });
        builder.setPositiveButton("确定", new OnClickListener() {

            @Override
            public void onClick(DialogInterface arg0, int arg1) {
                // TODO Auto-generated method stub
                String str = "";
                for (int i = 0; i < checkedItems.length; i++) {
                    if (checkedItems[i]) {
                        str = str + items[i];
                    }
                }
                myToast("您选择了" + str);
            }
        });
        builder.create().show();

    }

列表对话框

在这里插入图片描述
/**
     * 列表对话框
     */
    private void listDialog() {
        final String[] items = { "苹果", "草莓", "橘子", "冬瓜" };
        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        builder.setTitle("我是列表对话框");
        builder.setItems(items, new OnClickListener() {

            @Override
            public void onClick(DialogInterface arg0, int arg1) {
                // TODO Auto-generated method stub
                myToast(items[arg1]);
            }
        });
        builder.create().show();
    }

不带进度条的对话框,常用于等待加载数据时使用

在这里插入图片描述
/**
     * 不带进度条的对话框,常用于等待加载数据时使用
     */
    private void proDialog1() {
        ProgressDialog dialog = new ProgressDialog(MainActivity.this);
        dialog.setTitle("不带进度条的对话框");
        dialog.setMessage("正在加载中~");
        dialog.show();

    }

带进度的对话框

在这里插入图片描述
/**
     * 带进度的对话框
     */
    private void proDialog2() {
        final ProgressDialog dialog = new ProgressDialog(MainActivity.this);
        dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);// 设置水平样式
        dialog.setTitle("带进度条的对话框");
        dialog.setMessage("加载中~");
        dialog.setMax(200);
        dialog.show();
        new Thread(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                for (int j = 0; j <= 200; j++) {
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    dialog.setProgress(j);
                }

            }
        }).start();

    }

自定义布局的对话框

在这里插入图片描述
/**
     * 自定义布局的对话框
     */
    private void layDialog() {

        AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

        // 创建一个view,并且将布局加入view中
        View view = LayoutInflater.from(MainActivity.this).inflate(
                R.layout.dialog_edt, null, false);
        // 将view添加到builder中
        builder.setView(view);
        // 创建dialog
        final Dialog dialog = builder.create();
        // 初始化控件,注意这里是通过view.findViewById
        final EditText edt = (EditText) view.findViewById(R.id.edt);
        Button confirm = (Button) view.findViewById(R.id.confirm);
        Button cancel = (Button) view.findViewById(R.id.cancel);
        // 设置button的点击事件及获取editview中的文本内容
        confirm.setOnClickListener(new android.view.View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                String str = edt.getText() == null ? "" : edt.getText()
                        .toString();
                myToast(str);
            }
        });
        // 取消按钮
        cancel.setOnClickListener(new android.view.View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                dialog.dismiss();
            }
        });
        dialog.show();

    }

布局:

<?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:gravity="center"
    android:orientation="vertical" >

    <EditText
        android:id="@+id/edt"
        android:layout_width="150dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="50dp"
        android:hint="请输入内容" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="50dp"
        android:gravity="center"
        android:orientation="horizontal" >

        <Button
            android:id="@+id/confirm"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:text="确定" />

        <Button
            android:id="@+id/cancel"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="5dp"
            android:text="取消" />
    </LinearLayout>

</LinearLayout>

自定义对话框

在这里插入图片描述
package com.example.dialog;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.view.Display;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Button;
import android.widget.TextView;

/**
 * 自定义对话框
 * 
 * @author dimanche
 *
 */
public class MyDialog extends Dialog {
    private TextView title, content;
    private Button confirm, cancel;
    private String titleStr, contentStr, confirmStr, cancelStr;
    private Context mContext;
    // 按钮监听器
    private OnNoClickListener onNoClickListener;
    private OnYesClickListener onYesClickListener;

    public MyDialog(Context context) {
        super(context);
        this.mContext = context;

    }

    public MyDialog(Context context, int theme) {
        super(context, theme);
        this.mContext = context;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        getWindow().requestFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.dialog_my);
        init();
        setSize();
        title.setText(titleStr);
        content.setText(contentStr);
        confirm.setText(confirmStr);
        cancel.setText(cancelStr);
        // 确认按钮
        confirm.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                if (onYesClickListener == null) {
                    return;
                }
                onYesClickListener.confirm();
            }
        });
        // 取消按钮
        cancel.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {
                if (onNoClickListener == null) {
                    return;
                }
                onNoClickListener.cancel();
            }
        });

    }

    /*
     * 初始化控件
     */
    private void init() {
        title = (TextView) findViewById(R.id.title);
        content = (TextView) findViewById(R.id.content);
        confirm = (Button) findViewById(R.id.confirm);
        cancel = (Button) findViewById(R.id.cancel);
    }

    /*
     * 设置对话框的大小
     */
    private void setSize() {
        Window window = getWindow();
        // Point point = new Point();
        Display display = getWindow().getWindowManager().getDefaultDisplay();
        int x = display.getWidth();
        int y = display.getHeight();
        WindowManager.LayoutParams layoutParams = window.getAttributes();
        layoutParams.width = (x * 3) / 4;
        layoutParams.height = y / 2;
        window.setAttributes(layoutParams);
    }

    // ============================为外界服务部分============================

    /*
     * 设置取消对话框的点击事件的监听接口
     */
    public interface OnNoClickListener {
        public void cancel();

    }

    /*
     * 设置确认对话框的点击事件的监听接口
     */
    public interface OnYesClickListener {
        public void confirm();
    }

    /*
     * 为外部设置监听部分
     */
    public void setOnYesClick(String str, OnYesClickListener onYesClickListener) {
        if (str != null) {
            this.confirmStr = str;
        }
        this.onYesClickListener = onYesClickListener;
    }

    public void setOnNoClick(String str, OnNoClickListener onNoClickListener) {
        if (str != null) {
            this.cancelStr = str;
        }
        this.onNoClickListener = onNoClickListener;
    }

    /**
     * 为外界暴露方法,设置标题内容等
     */
    public void setTile(String str) {
        this.titleStr = str == null ? "" : str;
    }

    public void setContent(String str) {
        this.contentStr = str == null ? "" : str;
    }

}

布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:textSize="20sp"
        android:text="" />

    <TextView
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/title"
        android:padding="5dp"
        android:text="sss" />

    <View
        android:id="@+id/line"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true" />

    <Button
        android:id="@+id/cancel"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignRight="@id/line"
        android:layout_alignParentBottom="true"
        android:text="取消" />

    <Button
        android:id="@+id/confirm"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@id/line"
        android:layout_alignParentBottom="true"
        android:text="确定" />

</RelativeLayout>

代码已上传百度云:
链接:https://pan.baidu.com/s/1gF-XjSkeV5VdeDewAieJeA
提取码:9pla
个人微信公众号:

咸鱼咸不咸.png

相关文章

  • android中各种对话框整理

    对话框整理 普通对话框 单选对话框 多选对话框 列表对话框 不带进度条的对话框,常用于等待加载数据时使用 带进度的...

  • Android 对话框、信息提示和菜单

    注0:本文整理于 6 月 12 日 Android 对话框、信息提示和菜单对话框标准对话框显示按钮的方法标准对话框...

  • Android UI - Dialog

    Dialog Android 中的对话框大概可分为这几种类型,普通对话框、列表对话框、单选对话框、多选对话框、自定...

  • 通知

    Android中Notification 提示对话框,notification 概述 notification,俗...

  • Android之Dialog详解(一)

    Android中的对话框形式大致可分为五种:分别是一般对话框形式,列表对话框形式,单选按钮对话框,多选按钮对话框,...

  • Android 各种权限整理

    转载请注明出处:https://blog.csdn.net/weixin_42405014/article/det...

  • Android 如何创建对话框

    前言 Android中对话框的展示,对人机交互有着重要的意义,常见的对话框包括: 警告对话框 进度对话框 日期选择...

  • Android 四种定时器的写法

    更多Android总结知识点 Android中的13种Drawable小结 Android的八种对话框的实现 An...

  • Android系统常用广播

    更多Android总结知识点 Android中的13种Drawable小结 Android的八种对话框的实现 An...

  • Android中的13种Drawable小结

    更多Android总结知识点 Android中的13种Drawable小结 Android的八种对话框的实现 An...

网友评论

    本文标题:android中各种对话框整理

    本文链接:https://www.haomeiwen.com/subject/rgibhctx.html