android中各种对话框整理

版权声明: https://blog.csdn.net/yu805894501/article/details/91635149

对话框整理

普通对话框

在这里插入图片描述

/**
	 * 普通对话框
	 * 
	 * 对话框中的一些属性不一定是必须的,比如可以不设置标题、图标之类的,
	 * 
	 * 也可以只设置一个按钮或者两个按钮,如常见的确认退出对话框
	 */
	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

猜你喜欢

转载自blog.csdn.net/yu805894501/article/details/91635149