android中各種對話框整理

對話框整理

普通對話框

在這裏插入圖片描述

/**
	 * 普通對話框
	 * 
	 * 對話框中的一些屬性不一定是必須的,比如可以不設置標題、圖標之類的,
	 * 
	 * 也可以只設置一個按鈕或者兩個按鈕,如常見的確認退出對話框
	 */
	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

加入我的行列:

(嘿嘿嘿,點擊這裏關於我哦,分享小知識):https://www.jianshu.com/p/7d19f0df5b6b

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章